个人主页:wei_shuo的个人主页
Hello World !
数据操作语言,凡是对数据进行增删改操作的语句都是DML
insert delete update
insert 增
delete 删
update 改
这个主要操作表中的data
mysql> desc xs;
+----------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| 学号 | char(6) | NO | PRI | NULL | |
| 姓名 | char(8) | NO | | NULL | |
| 专业名 | varchar(20) | YES | | NULL | |
| 性别 | char(2) | NO | | 男 | |
| 出生日期 | date | NO | | NULL | |
| 总学分 | tinyint unsigned | YES | | NULL | |
| 备注 | text | YES | | NULL | |
+----------+------------------+------+-----+---------+-------+
7 rows in set (0.01 sec)
mysql> insert into xs values('200201','张明','计算机应用技术','男','1998-8-5','9','学习委员');
Query OK, 1 row affected (0.01 sec)
mysql> insert into xs(学号,姓名,性别,出生日期) values('200326','唐辉阳','男','2003-2-6');
Query OK, 1 row affected (0.01 sec)
插入多行数据
mysql> insert into xs(学号,姓名,性别,出生日期)
-> values
-> ('200336','李昌城','男','2003-6-3'),
-> ('200327','徐斌','男','2003-3-5'),
-> ('200308','郑明鑫','男','2003-4-5');
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> update xs
-> set 姓名='魏硕' where 学号='200201';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> delete from xs
-> where 姓名='高远';
Query OK, 1 row affected (0.01 sec)
使用truncate语句删除数据
(清空数据记录)
mysql> select * from sss;
+-------+-------+---------+------+--------+
| uid | uname | ugender | uedu | upor |
+-------+-------+---------+------+--------+
| 11111 | tang | n | bk | |
| 22222 | zhang | n | bk | 副教授 |
+-------+-------+---------+------+--------+
2 rows in set (0.00 sec)
mysql> truncate sss;
Query OK, 0 rows affected (0.04 sec)
mysql> select * from sss;
Empty set (0.01 sec)
数据定义语言,凡是带create,drop,alter的都是DDL
DDL主要操作的是表的结构,不是表中的数据
create 增
drop 删
alter 改
这个增删改和DML不同,主要是对表的结构进行操作
alter table cj rename 成绩表;
语法格式:
alter table 表名 change 旧字段名 新字段名 新数据类型;
alter table 信息管理学生表 change 专业名 zym varchar(15);
语法格式:
alter table 表名 modify 字段名 新数据类型;
alter table 信息管理学生表 modify zy varchar(20);
语法格式:
alter table 表名 add 新字段名 新数据类型 [约束条件] [first | after 已经存在的字段名];
alter table 信息管理学生表 add 年龄 varchar(3);
语法格式:
alter table 表名 drop 字段名;
alter table xs drop 备注;
create table 软件技术 select 学号,姓名,性别,出生日期,总学分,备注 from xs where 专业名='软件技术';
create table zyrs like xs;
drop table zyrs;
事务控制语言
包括:
事务提交:commit;
事务回滚:rollback;
数据控制语言
例如:授权grant、撤销权限revoke……
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| cjgl |
| cjgl1 |
| information_schema |
| mysql |
| performance_schema |
| sys |
| tang |
+--------------------+
7 rows in set (0.00 sec)
mysql> use cjgl1;
Database changed
mysql> source D:\Program Files\QQ files\cjgl-bak.sql
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.04 sec)
Query OK, 0 rows affected (0.04 sec)
Query OK, 0 rows affected (0.05 sec)
Query OK, 0 rows affected (0.05 sec)
Query OK, 29 rows affected (0.05 sec)
Records: 29 Duplicates: 0 Warnings: 0
Query OK, 0 rows affected (0.06 sec)
Query OK, 0 rows affected (0.06 sec)
Query OK, 0 rows affected (0.06 sec)
Query OK, 0 rows affected (0.06 sec)
Query OK, 0 rows affected (0.06 sec)
数据处理函数又被称为单行处理函数
单行处理函数的特点:一个输入对应一个输出
和单行处理函数相对的是:多行处理函数(多行处理函数的特点:多个输入,对应一个输出!)
mysql> select lower(课程名) 课程名,开课学期 from kc where 课程号=212;
+--------------+----------+
| 课程名 | 开课学期 |
+--------------+----------+
| oracle数据库 | 2 |
+--------------+----------+
1 row in set (0.01 sec)
mysql> select 课程名,开课学期 from kc where 课程号=212;
+--------------+----------+
| 课程名 | 开课学期 |
+--------------+----------+
| ORACLE数据库 | 2 |
+--------------+----------+
1 row in set (0.00 sec)
mysql> select upper(课程名) 课程名,开课学期 from kc;
+--------------+----------+
| 课程名 | 开课学期 |
+--------------+----------+
| 计算机基础 | 1 |
| C语言 | 1 |
| 高等数学 | 3 |
| 数据结构 | 5 |
| 操作系统 | 6 |
| 计算机组装 | 4 |
| ORACLE数据库 | 2 |
| 计算机网络 | 1 |
| 软件工程 | 7 |
+--------------+----------+
9 rows in set (0.01 sec)
mysql> select 课程名,开课学期 from kc;
+--------------+----------+
| 课程名 | 开课学期 |
+--------------+----------+
| 计算机基础 | 1 |
| c语言 | 1 |
| 高等数学 | 3 |
| 数据结构 | 5 |
| 操作系统 | 6 |
| 计算机组装 | 4 |
| ORACLE数据库 | 2 |
| 计算机网络 | 1 |
| 软件工程 | 7 |
+--------------+----------+
9 rows in set (0.00 sec)
#模糊查询课程号中第二位为零的行
mysql> select 课程号 from kc where substr(课程号,2,1)='0';
+--------+ 从课程号中第2位开始,取1位
| 课程号 |
+--------+
| 102 |
| 209 |
| 208 |
| 101 |
| 301 |
| 302 |
| 206 |
+--------+
7 rows in set (0.00 sec)
mysql> select concat('Hello','World') result;
+------------+
| result |
+------------+
| HelloWorld |
+------------+
1 row in set (0.00 sec)
mysql> select length('hhgjfgks') as result;
+--------+
| result |
+--------+
| 8 |
+--------+
1 row in set (0.00 sec)
mysql> select trim(' hkhhukhhyiyy ') result;
+--------------+
| result |
+--------------+
| hkhhukhhyiyy |
+--------------+
1 row in set (0.00 sec)
mysql> select concat(lower(substr(课程名,1,1)),substr(课程名,2,length(课程名)-1)) as result from kc where 课程号='212';
+--------------+
| result |
+--------------+
| oRACLE数据库 |
+--------------+
1 row in set (0.00 sec)
mysql> select 课程名 from kc where 课程号='212';
+--------------+
| 课程名 |
+--------------+
| ORACLE数据库 |
+--------------+
1 row in set (0.00 sec)
mysql> select round(3.6) as result;
+--------+
| result |
+--------+
| 4 |
+--------+
1 row in set (0.00 sec)
mysql> select round(3.764,2) as result; //四舍五入保留两位小数
+--------+
| result |
+--------+
| 3.76 |
+--------+
1 row in set (0.00 sec)
mysql> select round(rand(),1) 随机数 from kc;//生成0到1之间的随机数,保留一位小数
+--------+
| 随机数 |
+--------+
| 0.9 |
| 0 |
| 0.4 |
| 0.8 |
| 0.8 |
| 0.6 |
| 0.5 |
| 0.8 |
| 0.6 |
+--------+
9 rows in set (0.00 sec)
mysql> select round(rand()*100,0) result from kc; //100以内随机数
+--------+
| result |
+--------+
| 6 |
| 76 |
| 60 |
| 76 |
| 97 |
| 58 |
| 98 |
| 19 |
| 98 |
+--------+
9 rows in set (0.00 sec)
可以将null转化成一个具体的值
注意:
null如果参与运算,最终结果一定是null。为了避免这一现象,需要ifnull函数。
ifnull函数用法:
ifnull(数据,被当做那个值)
如果“数据”为null是,那么这个数据结构当做那个值
mysql> select 6 + ifnull(备注,8) result from xs;
+--------+
| result |
+--------+
| 14 |
| 14 |
| 14 |
| 14 |
| 14 |
| 14 |
| 14 |
| 14 |
| 6 |
| 14 |
| 6 |
| 14 |
| 6 |
| 14 |
| 14 |
| 14 |
| 14 |
| 14 |
| 14 |
| 14 |
+--------+
20 rows in set (0.00 sec)
mysql> select 开课学期,学分 from kc;
+----------+------+
| 开课学期 | 学分 |
+----------+------+
| 1 | 3 |
| 1 | 3 |
| 3 | 3 |
| 5 | 6 |
| 6 | 3 |
| 4 | 4 |
| 2 | 5 |
| 1 | 4 |
| 7 | 2 |
+----------+------+
9 rows in set (0.00 sec)
mysql> select 开课学期,(case 开课学期 when '1' then 学分+1 when '2' then 学分+2 else 学分 end) new from kc;
+----------+------+
| 开课学期 | new |
+----------+------+
| 1 | 4 |
| 1 | 4 |
| 3 | 3 |
| 5 | 6 |
| 6 | 3 |
| 4 | 4 |
| 2 | 7 |
| 1 | 5 |
| 7 | 2 |
+----------+------+
9 rows in set (0.00 sec)
多行处理函数的特点:输入多行,最终输出一行
count 计数
sum 求和
avg 平均值
max 最大值
min 最小值