您的位置:首页 > 数据库 > MySQL

mysql基础学习笔记

2016-09-30 08:18 447 查看
1、登录数据库。

mysql -uroot -pxxxx -h127.0.0.1 -P3306 --prompt xxx

prompt xxx可更改提示符 \D表示完整的日期; \d表示当前数据库;\h服务器名称;\u当前用户。

2、显示

select version(); 显示版本

select now();显示时间

select user();显示用户

3、创建数据库

create database xxx [character set utf8];

4、修改数据库编码

alter database t1 character set utf8;

5、删除数据库

drop database t1;

6、退出

exit quit \q

------------------------------------------------------

7、数据类型

整型 :TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT

浮点型:FLOAT[(M,D)] M表示总位数,D表示小数位数 DOUBLE[(M,D)]

日期类型:YEAR TIME DATE DATETIME TIMESTAMP(一般日期类型用的少,都用字符类型)

字符型:CHAR(M)、VARCHAR(M)、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、ENUM('value1','value2',...) (枚举类型)、SET('value1','value2',...)(取决于SET成员的数目数)

8、创建数据表

打开数据库:USE XXX

证明所在数据库:SELECT DATABASE();

创建命令:

CREATE TABLE tb1(字段 类型,字段 类型,...)

CREATE TABLE tb1(name VARCHAR(20),age TINYINT UNSIGNED,salary FLOAT(8,2) UNSIGNED);

9、查看数据表

SHOW TABLES;

SHOW TABLES FROM mysql

10、查看数据表结构

SHOW COLUMNS FROM tb;

11、记录的插入

INSERT 数据表名 VALUES(各字段的值); //默认是全部填写

INSERT 数据表名 (字段名) VALUES(字段的值); //只填写给出的字段名的值

12、记录的查找

SELECT * FROM 数据表名

13、字段的属性

NOT NULL  非空

PRIMARY KEY  主键(唯一)

AUTO_INCREMENT  自动编号(唯一)

UNIQUE KEY  唯一约束(可以有多个,可以为空值)

DEFAULT  默认值

字段名 SEX ENUM('1','2','3') DEFAULT '3'

14、外键约束(两个表之间的列可以关联)FOREIGN KEY(外键约束)

注意:父表与子表要有相同的存储引擎INNOBD;外键列与参照列的数据类型必须相同,如果是字符型,字符的长度可以不同。例子:

创建父表:

CREATE TABLE fu(id INT PRIMARY KEY AUTO_INCREMENT,city char(20));

创建子表:

CREATE TABLE zhi(

id INT PRIMARY KEY AUTO_INCREMENT,

name CHAR(20) not null,

pid INT,//存储所在的城市,这个城市在父表中,这就是所谓的外键,它会参照父表中的数据

FOREIGN KEY (pid) REFERENCES fu (id) //REFERENCES参考的意思

);

参数:
CASCADE:从父表删除或更新时自动更新子表

SET NULL:从你表删除或更新行,并设置子表有列为NULL

RESTRICT:拒绝对父表进行删除或更新操作

NO ACTION:标准SQL关键字,在MYSQL中与RESTRICT相同

15、

添加列 ALTER TABLE 表名 ADD 字段名(后可加各种属性)

删除列 ALTER TABLE 表名 DROP 字段名

16、添加主键   ALTER TABLE 表名 ADD PRIMEARY KEY(字段名)

修改默认值  ALTER TABLE 表名 ALTER 字段名 DEFAULT 15;

删除默认值  ALTER TABLE 表名 ALTER 字段名 DROP DEFAULT;

17、删除主键约束

ALTER TABLE 数据表  DROP PRIMARY KEY;

18、删除唯一约束

ALTER TABLE 数据表 DROP INDEX  字段名

19、修改数据表

修改位置:ALTER TABLE 表名 MODIFY ID (可加属性) FIRST|AFTER 列名

修改列名:ALTER TABLE 表名 CHANGE 旧列名 新列名 (可加属性)  //还可以修改位置

数据表改名:ALTER TABLE 旧表名 RENAME 新表名 或 RENAME TABLE 旧名 TO 新名

20、插入INSERT 时,默认时可以写成NULL,自动编号不受影响。值可以写成表达式。

可同时插入多条记录如:insert 表名 values(xxx,xxx,xx,xx),(xxx,xxx,xxx,xxx)

还有一种插入方法:insert 表名 set name='xxx',age=xx

还有一种插入方法:insert 表名 select…… 可以把查询到的数据插入到指定位置

21、更新记录

UPDATE 表名 SET age=age+5 //这样把所以年龄都加了5

加条件 UPDATE 表名 SET age=20 WHERE name='Jack'

22、单表删除记录

DELETE FROM 表名 //删除所有记录

加条件 DELETE FROM 表名 where id = 6

23、查找记录

select * from 表

select id,name from 表//只列出一部分

select tb.id,tb.name from 表

select id AS pid,name AS na from tb //AS可以省略,但不建议省略

24、条件过滤

where 对记录进行过滤 如果没有默认指全部记录,后可加函数和运算符

25、查询结果分组

SELECT sex FROM 表 GROUP BY sex

可设置条件分组 SELECT age,name FROM 表 GROUP BY sex HAVING age>20(后面条件的字段必须保证出现在SELECT里,比如age或放聚合函数)

26、查询结果排序

SELECT sex FROM 表 GROUP BY id DESC(翻译为降序)

SELECT sex FROM 表 GROUP BY age,id DESC//可以有两种参照排序

27、限制查询结果返回的数量LIMIT

SELECT * FROM 表 LIMIT 2/3,2;只返回两个记录

28、从一张表按条件查出结果插入到另外一张表

INSERT text(name) SELECT username FROM 另外表 WHERE age>=30;

29、子查询

SELECT AVG(total) FROM TB //AVG是求平均数

SELECT ROUND(AVG(total)) FROM TB //保留小数

SELECT age FROM TB WHERE age>(SELECT AVG(total) FROM TB)//嵌套查询

如果子查询返回了多个结果,可以用ANY、SOME、ALL来修饰

30、把查询的语句写入其他数据表

INSERT TB3(字段) SELECT *********

31、多表更新

UPDATE tdb_doogs INNER JOIN tdb_goods_cates ON goods_cate SET goos_cate = cate_id

创建表的同时把查询结果放入表中

CEREATE TABLE tdb_goods_brands

->(

->brand_id int primary key auto_increment,

->brand_name char(20) not null

->)

->select brand_name from tdb_goods group by brand_name;

32、表的连接略

33、字符函数

SELECT CONCAT(字符串A,字符串B) AS 别名 FROM 数据表 //连接字符串

SELECT CONCAT_WS('分割符',字符串A,字符串B) AS 别名 FROM 数据表 //连接字符串

SELECT FORMAT(13235.62,2) //格式化,第二个参数是小数位数,以千分位显示

SELECT LOWER('ABC') //转换成小写

SELECT UPPER('abc') //转换成大写

SELECT LENGTH('abc') //获取字符串长度

SELECT LTRIM(' abc') //删除前导空格

SELECT RTRIM('abc ') //删除后续空格

SELECT TRIM(BOTH '?' FROM '??abc???') //删除前导和后续空格

SELECT SUBSTRING('MySQL',1,2) //字符串截取

SELECT 'MySQL 'LIKE 'M%'; //模式匹配 %代表任意多个字符,_代表任务一个字符,相当于通配符,返回结果是TURE

例子:SELECT * FROM test WHERE first_name LIKE '%o%'

SELECT REPLACE('???a??bc','?','') //字符串替换

34、数值运算符与函数

CEIL()  进一取整

DIV 整数除法

FLOOR() 舍一取整

MOD 取余数

POWER() 幂运算

ROUND() 四舍五入

TRUNCATE()数字截取
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: