DDL数据定义语句
DML数据操控语句
DCL数据控制语句
1.连接数据库
cmd命令行
未设置密码: mysql直接进入
mysql -uroot p123456(-u指定用户名,-p指定密码,也可以加上数据库名表示连接数据库)
2.基本函数
选择数据库
use test_1;
查看数据库中的所有表
show tables;
查看表属性
1)DDL
创建数据库
create database test_1;
删除数据库
drop database test_1;
创建表
create table mc(uid int primary kay,uname var);
查看表定义 desc mc
show create table mc \G;
删除表
drop table mc;
修改表
ALTER TABLE mc ADD COLUMN grade INT(2);#添加字段grade
ALTER TABLE mc MODIFY grade INT(3);#修改字段类型
ALTER TABLE mc DROP COLUMN grade;#删除
ALTER TABLE mc CHANGE id uid INT(10); #改名
ALTER TABLE mc ADD sex VARCHAR(2) AFTER uid;#在指定位置添加字段
ALTER TABLE mc MODIFY grade INT(2) FIRST;#更改字段位置
ALTER TABLE mc RENAME WutheringWaves;#改表名
2)DML
对表记录操作
插入,更新,删除,查询
#创建表便于后续示例操作
create table chara(
cno int(2) primary key,
cname char(6) unique,
csex char(2) check csex in(‘男’,‘女’),
age int(2)
);
insert into chara
values
(1,‘忌炎’,‘男’,23),
(2,‘吟霖’,‘女’,27),
(3,‘今汐’,‘女’,16),
(4,‘长离’,‘女’,null),
(5,‘折枝’,‘女’,19),
(6,‘相里要’,‘男’,null);
insert into chara(cname,ano,csex) values (‘卡卡罗’,7,‘男’);#未表示插入的字段自动补充为null
#完毕#
插入
insert into mc (uid,sex,grade) values(105951449,‘男’,66);
#这是我uid,有没有一块玩的,加我
insert into mc
values
(80,100000000,null);
(32,1,‘女’),
(46,3,‘男’),
(12,2,‘女’),
(56,7,‘男’);
更新
update mc set uid =1001 where uid=1;#可同时更新多个表,格式一致
删除
delete from mc where uid =9;
delete a,b from mc a,chara b where a.uid=b.cno and b.cname=‘卡卡罗’;#同时删除多张表
查询
·1查询不重复记录
distinct
·2条件查询
与Oracle的where语句一致
·3排序和限制
limit MySQL独有,其他数据库不通用
mysql>select * from chara where cno order by cno limit 2,3;
#默认情况起始偏移量为0,从第二行开始显示3行数据
查询结果:
+-----+--------+------+------+
| cno | cname | csex | age |
+-----+--------+------+------+
| 3 | 今汐 | 女 | 16 |
| 4 | 长离 | 女 | NULL |
| 5 | 折枝 | 女 | 19 |
+-----+--------+------+------+
3 rows in set (0.00 sec)
·4聚合
with rollup 对结果进行汇总
mysql> select cno,csex,count(*) from chara group by csex with rollup;
+-----+------+----------+
| cno | csex | count(*) |
+-----+------+----------+
| 2 | 女 | 5 |
| 1 | 男 | 2 |
| 1 | NULL | 7 |
+-----+------+----------+
3 rows in set (0.00 sec)
·5表连接
左连接 left join on 右连接 right join on
·6子查询
in not in = != exists not exists
·7记录连接
union合并重复 union all 显示所有
mysql> select uid from mc
-> union
-> select cno from chara;
+-----------+
| uid |
+-----------+
| 2 |
| 3 |
| 1001 |
| 100000000 |
| 105951449 |
| 7 |
| 1 |
| 5 |
| 6 |
| 4 |
+-----------+
10 rows in set (0.00 sec)
3)DCL
授权用一般很少使用
在cmd窗口中授权数据库插入查询另一个数据库的操作
GRANT SELECT,INSERT ON test_1.* TO ‘mc’@‘localhost’ IDENTIFIED BY ‘123456’;