mysql数据库管理

SQL语句概述.

1、SQL语言
Structured Query Language的缩写,即结构化查询语言
关系型数据库的标准语言
用于维护管理数据库
包括数据查询、数据更新、访问控制、对象管理等功能
2、SQL分类
DDL:数据定义语言
DML:数据操纵语言
DQL:数据查询语言
DCL:数据控制语言

# char和varchar的区别

1、char的长度是不可变的,而varchar的长度是可变的
字段b:类型char(10),值为: abc,存储为: abc (abc+7个空格)
字段d:类型varchar(10),值为: abc,存储为: abc (自动变为3个的长度)
2、超出长度自动截取
字段c:类型char(3),值为: abcdefg,存储为: abc (defg自动删除)
字段e:类型varchar(3),值为: abcdefg,存储为:abc (defg自动删除)
3、varchar(10)和char(10),都表示可存10个字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放10个
4、char最多可以存放255个字符
varchar的最大长度为65535个字节,varchar可存放的字符数跟编码有关字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766个字符字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845个字符

注:
一个汉字占多少长度与编码有关:
UTF-8:一个汉字=3个字节
GBK:一个汉字=2个字节

mysql数据库常用语句分类

1、DDL(Data Definition Language,数据定义语言)∶用来建立数据库、数据库对象和定义字段,如 CREATE、ALTER、DROP。
2、DML(Data Manipulation Language,数据操纵语言)∶用来插入、删除和修改数据库中的数据,如 INSERT、UPDATE、DELETE。
3、DQL (Data Query Language,数据查询语言):用来查询数据库中的数据,如SELECT。
4、DCL (Data Control Language,数据控制语言):用来控制数据库组件的存取许可、存取权限等,如 COMMIT、ROLLBACK、GRANT、REVOKE。

一、DDL

1.创建新的数据库
实例:

mysql> create database auth;//创建auth数据库
Query OK, 1 row affected (0.00 sec)

2.创建新的表
CREATE TABLE表名(字段1名称类型,字段2名称类型,…,PRIMARY KEY (主键名))

实例:
创建一个表 里面添加属性

mysql> use auth;//进入auth数据库
Database changed
mysql> create table users(user_name char(64) not null primary key, user_passwd varchar(64) default '');
Query OK, 0 rows affected (0.01 sec)

mysql> describe users;    //查看user表
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| user_name   | char(64)    | NO   | PRI | NULL    |       |
| user_passwd | varchar(64) | YES  |     |         |       |
+-------------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

mysql> 

mysql> create database aaa;  //创建aaa数据库
Query OK, 1 row affected (0.01 sec)

mysql> use aaa;  //进入表
Database changed
mysql> create table cj(id int(10) auto_increment primary key, age int(3) not null, name varchar(128) not null, score decimal(5));
Query OK, 0 rows affected (0.00 sec)

mysql> describe cj;  //查看表
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(10)      | NO   | PRI | NULL    | auto_increment |
| age   | int(3)       | NO   |     | NULL    |                |
| name  | varchar(128) | NO   |     | NULL    |                |
| score | decimal(5,0) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

3、增加一个属性 修改表结构

mysql> alter table cj add column addr int(3);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc cj;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(10)      | NO   | PRI | NULL    | auto_increment |
| age   | int(3)       | NO   |     | NULL    |                |
| name  | varchar(128) | NO   |     | NULL    |                |
| score | decimal(5,0) | YES  |     | NULL    |                |
| addr  | int(3)       | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

mysql> 

4.删除一个数据表

mysql> create table cj2 like cj;   //克隆cj表的数据  并且生成cj2
Query OK, 0 rows affected (0.00 sec)

mysql> drop table cj2;  //删除cj2表
Query OK, 0 rows affected (0.01 sec)

5、删除一个数据库

mysql> create database abc;   //创建abc数据库
Query OK, 1 row affected (0.00 sec)

mysql> drop database abc;   //删除abc数据库
Query OK, 0 rows affected (0.01 sec)

二、DML

1.插入数据记录
INSERT INTO 表名(字段1,字段:2,…) VALUES(字段1的值,
字段2的值,…)

mysql> desc users;   //查看表结构
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| user_name   | char(64)    | NO   | PRI | NULL    |       |
| user_passwd | varchar(64) | YES  |     |         |       |
+-------------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> insert into users(user_name,user_passwd) values('zhangsan', password('123456'));  //创建zhangsan  密码123456(密文)
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> insert into users values('lisi','abc123');   //创建lisi  user_passwd数值是abc123(不是密码,是数值)
Query OK, 1 row affected (0.00 sec)

mysql> select * from users;  //查看users表里面的所有内容
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| lisi      | abc123                                    |
| zhangsan  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

mysql> 


mysql> insert into cj(age,name,score,addr) values(17,'zhangsan',60,101), (19,'lisi',89,102), (19,'wangwu',88,103), (20,'wangerma',99,104), (22,'song',77,105);
Query OK, 5 rows affected (0.00 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> select * from cj;
+----+-----+----------+-------+------+
| id | age | name     | score | addr |
+----+-----+----------+-------+------+
|  1 |  17 | zhangsan |    60 |  101 |
|  2 |  19 | lisi     |    89 |  102 |
|  3 |  19 | wangwu   |    88 |  103 |
|  4 |  20 | wangerma |    99 |  104 |
|  5 |  22 | song     |    77 |  105 |
+----+-----+----------+-------+------+
5 rows in set (0.00 sec)

mysql> 

查询核心库

mysql> show databases;   
+--------------------+
| Database           |
+--------------------+
| information_schema |
| aaa                |
| auth               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

mysql> 

2、修改数据记录

mysql> select * from cj;  
+----+-----+----------+-------+------+
| id | age | name     | score | addr |
+----+-----+----------+-------+------+
|  1 |  17 | zhangsan |    60 |  101 |
|  2 |  19 | lisi     |    89 |  102 |
|  3 |  19 | wangwu   |    88 |  103 |
|  4 |  20 | wangerma |    99 |  104 |
|  5 |  22 | song     |    77 |  105 |
+----+-----+----------+-------+------+
5 rows in set (0.00 sec)

mysql> update cj set age=99 where name='zhangsan';   //更新zhangsan的年龄99
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from cj;
+----+-----+----------+-------+------+
| id | age | name     | score | addr |
+----+-----+----------+-------+------+
|  1 |  99 | zhangsan |    60 |  101 |
|  2 |  19 | lisi     |    89 |  102 |
|  3 |  19 | wangwu   |    88 |  103 |
|  4 |  20 | wangerma |    99 |  104 |
|  5 |  22 | song     |    77 |  105 |
+----+-----+----------+-------+------+
5 rows in set (0.00 sec)

mysql> 

3、删除数据库记录

mysql> delete from cj where name='zhangsan';  //删除name是zhangsan
Query OK, 1 row affected (0.00 sec)

mysql> select * from cj;
+----+-----+----------+-------+------+
| id | age | name     | score | addr |
+----+-----+----------+-------+------+
|  2 |  19 | lisi     |    89 |  102 |
|  3 |  19 | wangwu   |    88 |  103 |
|  4 |  20 | wangerma |    99 |  104 |
|  5 |  22 | song     |    77 |  105 |
+----+-----+----------+-------+------+
4 rows in set (0.00 sec)

mysql> 

三、DQL

1、查询数据记录
SELECT字段名1,字段名2,… FROM 表名WHERE 条件表达式

mysql> select * from users;
ERROR 1146 (42S02): Table 'aaa.users' doesn't exist
mysql> use auth;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from users;
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| lisi      | abc123                                    |
| zhangsan  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

mysql> select user_name from users;  //从user表中查看user_name
+-----------+
| user_name |
+-----------+
| lisi      |
| zhangsan  |
+-----------+
2 rows in set (0.00 sec)

mysql> 


mysql> select user_name,user_passwd from users;   //查询俩个用,号隔开
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| lisi      | abc123                                    |
| zhangsan  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

mysql> 

四、DCL

1.授予权限
GRANT权限列表ON数据库名.表名 TO用户名@来源地址〔 IDENTIFIED BY‘密码’]

mysql> grant select on *.* to 'lisi'@'localhost' identified by '123456';   
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show grants for 'lisi'@'localhost';
+-------------------------------------------+
| Grants for lisi@localhost                 |
+-------------------------------------------+
| GRANT SELECT ON *.* TO 'lisi'@'localhost' |
+-------------------------------------------+
1 row in set (0.00 sec)

[root@server1 ~]# mysql -ulisi -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.20 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show grants for 'lisi'@'localhost';
+-------------------------------------------+
| Grants for lisi@localhost                 |
+-------------------------------------------+
| GRANT SELECT ON *.* TO 'lisi'@'localhost' |
+-------------------------------------------+
1 row in set (0.00 sec)

mysql> 

临时表

在数据库里临时建立的表,记录当下的短暂数据,退出数据库后,表将消失

mysql> use aaa;  //进入aaa数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> create temporary table song (id int(3) not null,name varchar(64) not null);  //创建临时表
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;  //查看表  没有song表的存在
+---------------+
| Tables_in_aaa |
+---------------+
| cj            |
+---------------+
1 row in set (0.00 sec)

mysql> insert into song values (1,'shu'),(2,'feng');   //给song表添加属性
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from song;   //能临时看到表中的数据
+----+------+
| id | name |
+----+------+
|  1 | shu  |
|  2 | feng |
+----+------+
2 rows in set (0.00 sec)

mysql> 

克隆表

mysql> create table cj2 like cj;;  //从cj表拷贝结构给cj2
Query OK, 0 rows affected (0.01 sec)


mysql> show tables; 
+---------------+
| Tables_in_aaa |
+---------------+
| cj            |
| cj2           |
+---------------+
2 rows in set (0.00 sec)


mysql> insert into cj2 select * from cj;   //拷贝cj表上的内容给cj2
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select * from cj2;   //查看cj2的内容
+----+-----+----------+-------+------+
| id | age | name     | score | addr |
+----+-----+----------+-------+------+
|  2 |  19 | lisi     |    89 |  102 |
|  3 |  19 | wangwu   |    88 |  103 |
|  4 |  20 | wangerma |    99 |  104 |
|  5 |  22 | song     |    77 |  105 |
+----+-----+----------+-------+------+
4 rows in set (0.00 sec)

mysql> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值