MySQL之DDL,DQL,DML,DCL

5.DDL 数据定义语言


操作:


*查看所有数据库的名称:
SHOW DATABASES;


*切换数据库:(切换到student数据库)
USE student; 


*创建数据库
CREATE DATABASE 数据库名称;
如果这个数据库已经存在则会报错,那么我们这样做:
CREATE DATABASE IF NOT EXISTS 数据库名称;
那么就会在此数据库不存在时创建,存在了也不会报错。


*删除数据库
DROP DATABASE 数据库名称;
如果该数据库不存在则此时会报错,那么该这样做
DROP DATABASE IF EXISTS 数据库名称;
这样就只会在数据库存在的时候删除,不存在也不会报错。


*修改数据库的编码
数据库的编码应在安装时就已经设置好了。
ALTER DATABASE 数据库的名称 CHARACTER SET utf8;
注:是utf8而不是utf-8


*操作表
列如:
CREATE TABLE student(
sid CHAR(6),
sname VARCHAR(20),
age INT,
gender VARCHAR(10)
);
列如:
CREATE TABLE emp(
eid CHAR(6),
ename VARCHAR(50),
age INT,
gender VARCHAR(6),
birthday DATE,
hiredata DATE,
salary DECIMAL(7,2),
resume VARCHAR(1000)
);


*查看当前数据库所有表的名称
SHOW TABLES;


*查看表的结构
DESC emp;


*删除表
DROP TABLE emp;


*修改表:
添加一列
ALTER TABLE 表名 ADD(列名 列值);


修改列的类型 
ALTER TABLE 表名 MODIFY 列名 列值;


修改列名
ALTER TABLE 表名  CHANGE 列名 新列名 新列值;


删除列
ALTER TABLE 表名 DROP 列名;


修改表的名称

ALTER TABLE 表名 RENAME TO 新表名


6.数据类型


*int 整型


*double 浮点型 double(5,2)表示最多5位,其中必须有两位小数,即最大值为999.99;


*decimal 泛型型,在表单钱的方面使用该类型,不会出现精度确实问题。


*char 固定长度字符串类型


*varchar 可变长度字符串类型


*text 字符串类型


*blob 字节类型


*data 日期类型,格式为yyyy-MM-dd


*time 时间类型 格式为hh:mm:ss


*timestamp:时间戳类型 格式yyyy-MM-dd hh:mm:ss


7.DML 数据操作语言


*插入数据


INSERT INTO 表名(列名1,列名2,...)values(值1,值2,...);


列如:INSERT INTO student (
sid,sanme,age,dender
)values(
's_0001','zhangsan',23,'male'
);


注:用的是单引号,并不是双引号。




*修改数据


UPDATE 表名 SET 列名1=值1,...列名n=值n WHERE 条件;
列如:
UPDATA student SET sname='lisi',age='32',dender='female' WHERE sid='s_0001';


UPDATA student SET sname='lisi',age='32',dender='female' WHERE age >50 AND gender='male';


UPDATA student SET sname='lisi',age='32',dender='female' WHERE age > 60 OR gender = 'female';


UPDATA student SET 
age=age+1 WHERE sid='s_0001';


*删除数据
DELETE FROM 表名 WHERE 条件;


列如:
DELETE FROM student WHERE sanme='zhangsan';


DELETE FROM 表名;这样无条件是将整张表的内容都删掉


TRUNCATE TABLE 表名;也是将整张表的内容删除 但是效率比DELETE 要高。TRUNCATE是将整张表删掉后在创建一张新表,属性为DDL,无法回滚,但是DELETE删除的记录是可以回滚的。




8.DCL 数据控制语言
以下操作都是在root下进行的


*创建用户
CREATE USER 用户名 @地址 IDENTIFIED BY '密码';


列如:CREATE USER user1 @localhost IDENTIFIED BY '123';


*给用户授权


GRANT 权限1,...权限n ON 数据库.* TO 用户名;
GRANT ALL ON 数据库名.* TO USER2@localhost;


*撤销授权
REVOKE 权限1,...,权限n ON 数据库.* FROM 用户名;
REVOKE CREATE ON 数据库名.* FROM user1@localhost;




*查看用户权限
SHOW GRABTS FOR 用户名;


*删除用户名
DROP USER 用户名;


*修改用户名密码


USE 数据库名;
UPDATE USER SET PASS WORD=PASSWORD('密码')
WHERE User='用户名' and Host='IP';
FLUSH PRIVILEGES;


9.DQL 数据查询语言(最重点)
不会对数据做出改变,只是把结果输送到客户端


*基本查询:


SELECT * FROM 表名;


SELECT 列名1,...列名n FROM 表名;


*条件查询:


WHERE子句可以使用以下运算符及关键字:
=,  !=,  <>,  <,  >,  <=,  >=;


BETWEEN ... AND;


IN(set);


IS NULL;


AND;


OR;


NOT;


查询性别为女,并且年龄为50 的人信息
SELECT * FROM 表名 WHERE gender='female' AND age='50';




查询学号为s_1001,或者姓名为lisi的记录
SELECT * FROM 表名 WHERE sid='s_1001' OR sname='lisi';


查询学号为s_1001,s_1002,s_1003的记录
SELECT * FROM 表名 WHERE sid IN('S_1001','S_1002','S_1003');


查询年龄为null的记录
SELECT * FROM 表名 WHERE age IS NULL;


查询年龄在20到40之间的学生记录
SELECT * FROM 表名
WHERE age>=20 AND age<=40;
或者
SELECT * FROM 表名 
WHERE age BETWEEN 20 AND 40;


查询性别非男的学生记录
SELECT * FROM 表名
WHERE gender!='male';
或者
SELECT * FROM 表名
WHERE gender<>'male';
或者
SELECT * FROM 表名
WHERE NOT gender='male';


查询姓名不为null的学生记录
SELECT * FROM 表名
WHERE NOT sname IS NULL;
或者
SELECT * FROM 表名
WHERE sname IS NOT NULL;


*模糊查询 关键字LIKE


查询姓名由5个字母构成的学生记录
SELECT * FROM 表名 WHERE sanme LIKE '_____';


查询姓名由5个字母构成,并且第5个字母为“i”的学生记录
SELECT * 
FROM 表名
WHERE sname LIKE '____i';


查询姓名以“z”开头的学生记录
SELECT * 
FROM 表名
WHERE sname LIKE 'z%';
其中"%"匹配0~n个任何字母。




查询姓名中第2个字母为“i”的学生记录
SELECT * 
FROM 表名
WHERE sname LIKE '_i%';




查询姓名中包含"a"字母的学生记录
SELECT * 
FROM 表名
WHERE sname LIKE '%a%';




*字段控制查询


去除重复的记录
SELECT DISTINCT 列名
FROM 表名;


查看雇员的月薪与佣金之和


SELECT *,sal+comm FROM 表名;
其中sal与comm都为int型,如果comm的值为null则任何东西与NULL相加结果还是NULL,
要进行下面操作:
SELECT *,sal+IFNULL(comm,0) FROM emp;
comm中的null会被当做0来对待


给列名添加别名


SELECT *, sal+IFNULL(comm,0) AS total 
FROM 表名;
AS的关键字是可以省略的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值