Mysql 1.数据库基本语法
一 操作数据库 CRUD
RETRIEVE
查看数据库:
SHOW CREATE DATABASE 数据库名;
查看全部数据库
SHOW DATABASES;
CREATE
创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名;
创建指定编码集数据库
CREATE DATABASE IF NOT EXISTS 数据库名 CHARACTER SET 编码集名;
UPDATE
修改数据库名称
ALTER DATABASE 数据库名 CHARACTER SET UTF8;
DELETE
删库
DROP DATABASE IF EXISTS 数据库名
查询正在使用的数据库
SELECT DATABASE();
使用数据库
use 数据库名;
二 操作表
RETRIEVE
查询表
SHOW TABLES;
查看表字符集
SHOW CREATE TABLE 表名;
查询指定表结构
DESC 表名;
CREATE
创建表
CREATE TABLE 表名(
列名1 数据类型1,
列名2 数据类型2,
...
列名n 数据类型n
);
最后一列不需要加逗号
数据类型:
1.INT 整数 age INT,
2.DOUBLE 小数 score DOUBLE(5,2), 有五位 小数点后两位
3.DATE 日期 只包含年月日 yyyy-MM-dd
4.DATATIME 日期 年月日时分秒 yyyy-MM-dd HH:MM:SS
5.TIMESTAMP 时间戳 如果设置为这个类型 不赋值 或者赋值为null 则会以系统当前时间进行赋值
6.VARCHAR 字符串 name VARCHAR(20),
复制表
CREATE TABLE 表名 LIKE 被复制表名
UPDATE
修改表
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
修改表的字符集
ALTER TABLE 表名 CHARACTER SET UTF8;
添加一列
ALTER TABLE 表名 ADD 列名 数据类型;
修改列名
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
修改列数据类型
ALTER TABLE 表名 MODIFY 列名 新数据类型;
DELETE
删除表
ALTER TABLE 表名;
删除列
ALTER TABLE 表名 DROP 列名;
三 操作数据
1 添加数据
INSERT INTO 表名 (列名1,列名2,列名3)VALUES(值1,值2,值3);
如果不添加列名 要求给所有列属性赋值
INSERT INTO students values(2,'赵敏',16,98.7,'1997-12-10',null);
2 删除数据
删除一行数据
DELETE FROM 表名 WHERE 列名= 值;
删除表中所有数据 多次执行单行删除
DELETE FROM 表名
建议使用
TRUNCATE TABLE 表名;
删除整个表 并建立一个一模一样的空表
3 修改数据
UPDATE 表名 SET 列名1=值1,列名2=值2 WHERE 条件
UPDATE students SET age=20,score=100 WHERE id=1;
不加条件会改整列
4 查询数据
多字段查询
SELECT 字段1 字段2
FROM 表名;
SELECT NAME,age FROM student3;
去重复字段
SELECT DISTINCT 字段
FROM 表名;
SELECT DISTINCT address FROM student3;
计算列
SELECT NAME,math,english,math+english FROM student3;
起列名
SELECT NAME,math 数学,english 英语,math+IFNULL(english,0) 总分 FROM student3;
条件查询
SELECT *
FROM student3
WHERE age!=20;
SELECT *
FROM student3
WHERE age> 20 AND age<60; -- AND
SELECT *
FROM student3
WHERE age BETWEEN 20 AND 30; -- BETWEEN AND
SELECT *
FROM student3
WHERE age=22 OR age=18; -- OR
SELECT *
FROM student3
WHERE age IN(18,20); -IN ()
SELECT *
FROM student3
WHERE english IS NULL; - IS NULL
SELECT *
FROM student3
WHERE english IS NOT NULL; -IS NOT NULL
模糊查询
%为多个字符 的占位符 _为单个字符
SELECT*
FROM student3
WHERE NAME LIKE'马%'; -- %为多个字符 的占位符 _为单个字符
SELECT*
FROM student3
WHERE NAME LIKE'_化%';
-- 查询带德字的名字
SELECT*
FROM student3
WHERE NAME LIKE'%德%';