Head First Mysql笔记

1.编写mysql命令时最好命令使用大写字母,以区分,如:

CREATE TABLE person(id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(30) NOT NULL,
password VARCHAR(30) NOT NULL);

2.删除表:DROP TABLE table_name ;
删除记录:DELETE FROM table_name WHERE condition ;
删除行:ALTER TABLE table_name DROP COLUMN column_name ;

3.插入数据时,除了数值类型的变量外,其余的数据都需要使用单引号;插入数据也可以只填入部分知道值的列,只需要一一对应即可:

INSERT INTO table_name(id,username) VALUE(1,'chengxi') ;

4.创建表时可以指定列的默认值:

CREATE TABLE table_name(column_name VARCHAR(30) NOT NULL DEFAULT '默认值') ;

5.创建表之后可以使用命令:DESC table_name ; 来查看该表的各列的详细信息;使用命令:SHOW CREATE TABLE table_name ;来查看创建该表时的sql语句

6.创建表时如果想插入单引号,可以使用两种转义方式,如下:

1.使用反斜线转义:
INSERT INTO person(username) value('cheng\'s_name') ;
2.使用单引号转义:
INSERT INTO person(username) value('cheng''s_name) ;

7.字符串类型的数据可以使用比较运算符:

//下面这行SQL语句表示查询username首字母在【L,X】之间的person表的记录
select * from person where username >= 'L' and username <= 'X' ;

8.判空不能使用 =null/ =’null’,因为null不能做比较,判空使用IS NULL/IS NOT NULL

9.where condition还可以使用通配符,%表示任意数量的未知字符,_表示一个未知字符,通配符通常与like一起使用:

SELECT * FROM person WHERE username LIKE 'cheng%' ;

10.在两个数值之间除了使用比较运算符之外,还可以使用:BETWEEN a AND b/NOT BETWEEN a AND b

11.update修改表的形式:

UPDATE table_name SET column_name = value ,... WHERE condition ;

12.使用ALTER命令为表添加主键:

ALTER TABLE table_name ADD COLUMN column_name type ...,
ADD PRIMARY KEY(column_name) ;

13.修改表名:ALTER TABLE table_name RENAME TO new_name ;
修改列:ALTER TABLE table_name CHANGE COLUMN oldcolumn_name newcolumn_name type ... ;
修改列类型:ALTER TABLE table_name MODIFY column_name new_type ;

12.mysql自带的一些有关查询的函数:

1.从指定的方向选取指定列的指定长度的子串:
SELECT LEFT/RIGHT(column_name,length) FROM table_name ;
2.查找指定列的指定的字符第几次出现的位置之前的子串:
SELECT SUBSTRING_INDEX(column_name,char,index) FROM table_name ;
3.返回指定列的从指定字符开始的指定长度的子串:
SELECT SUBSTRING(column_name,startchar,length) FROM table_name ;
4.返回指定列的全部大写/小写形式:
SELECT UPPER/LOWER(column_name) FROM table_name ;
5.返回指定列的反转字符串形式;
SELECT REVERSE(column_name) FROM table_name ;
6.返回清除了左/右多余空格的字符串:
SELECT LTRIM/RTRIM(column_name) FROM table_name ;
7.返回指定列的长度:
SELECT LENGTH(column_name) FROM table_name ;
8.对指定列的数据进行全部加总:
SELECT SUM(column_name) FROM table_name ;
9.按指定的列进行分组:
SELECT * FROM table_name GROUP BY column_name ;
10.计算指定列的平均值:
SELECT AVG(column_name) FROM table_name ;
11.返回指定列的记录的个数:
SELECT COUNT(column_name) FROM table_name ;
12.返回指定列的最小/最大值:
SELECT MIN/MAX(column_name) FROM table_name ;
13.按照指定列进行排序:
SELECT * FROM table_name ORDER BY column_name DESC/ASC ;

13.合成UPDATE形式:

UPDATE table_name SET column_name = 
CASE 
WHEN column_name2 = v1
    THEN value1
WHEN column_name2 = v2
    THEN value2
ELSE value3 
END ;

14.使用DISTINCE关键字去除重复值:

SELECT DISTINCE column_name FROM table_name  ;

15.使用LIMIT关键字限制查询数量:

1.带一个参数,指定返回结果的数量
SELECT * FROM table_name LIMIT length ;
2.带两个参数,分别表示从第几个开始和返回结果的数量,其中开始的位置从0算起:
SELECT * FROM table_name LIMIT startindex,length ;

16.定义外键,可以将两个表连接起来,与外键连接的键不一定要是所在的表的主键,但是一定要唯一:

FOREIGN KEY(column_name1) REFERENCES table_name(column_name2_ ;

17.第一范式1NF:数据列只包含具有原子性的值;无重复数据列也就是除了名字不同其余都相同的列
第二范式2NF:符合第一范式;没有部分函数依赖性
第三范式3NF:符合第二范式,没有传递函数依赖性

18.INSERT 和SELECT语句结合使用,用于将查询得到的数据填满表中对应的列:

INSERT INTO table1(column1) SELECT column2 FROM table2 ;

19.CREATE和SELECT语句结合使用,用于将查询得到的数据填满创建的表中的对应的列:

CREATE TABLE table as SELECT column FROM table2 ;

20.为列或者表起别名:

SELECT column AS colname FROM table as tabname ;

21.内连接就是通过查询条件移除某些结果行后的交叉连接:

SELECT * FROM table1,table2 WHERE condition ;

22.左外连接LEFT OUTER JOIN ;右外连接RIGHT OUTER JOIN

23.union关键字用于将两个SELECT语句的结果联合成一个结果表:
union all表示结果重复也都会返回:

SELECT * FROM table1 UNION SELECT * FROM table2 ;

24.INTERSECT/EXCEPT表示交集/差集,也是用于连接两个SELECT语句的

25.创建表的时候可以为列增加CHECK约束,指定该列的值必须满足条件:

CREATE TABLE table(column type CHECK(condition)) ;

也可以在创建之后使用alter来增加约束:

ALTER TABLE table ADD CONTRAINT CHECK(...) ;

26.事务表示一群可以完成一组工作的sql语句,使用START TRANSACTION开启事务,使用COMMIT/ROLLBACK来提交/回滚事务。在提交或者回滚事务之前我们可以使用查询语句来查询我们的操作结果,不过要使用提交之后才能真正应用于数据库

27.为根用户也就是root用户设定密码:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpassword') ;

28.创建新的用户:

CREATE USER username IDENTIFIED BY password ;

为创建的用户授予权限:

GRANT SELECT/UPDATE/ALTER/ALL/DELETE ON table TO user ;
//授权同时指定该用户也可以用于授权给其他用户
GRANT SELECT/UPDATE/ALTER/ALL/DELETE ON tabl TO user WITH GRANT OPTION ;

撤销指定用户的权限:

REVOKE SELECT/UPDATE/ALTER/ALL/DELETE ON table FROM user ;
//也可以只撤销其权限传播:
REVOKE GRANT OPTION ON table FROM user ;
//还可以注定撤销的方式:CASCASE级联删除;RESTRICT若有级联,则撤销失败:
REVOKE GRANT OPTION ON table FROM user CASCASE/RESTRICT ;

30.角色用于将特定权限汇集成组,然后授予一群人:

1.创建角色:
CREATE ROLE  role ;
2.授予角色权限:
GRANT 权限 ON table TO role ;
3.授予用户角色:
GRANT role TO user ;
4.删除角色:
DROP ROLE role ;
5.设置角色可传播给其他角色:
WITH ADMIN OPTION ;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值