Msql登陆和退出
1.登陆
1.登陆本机的数据库
mysql -uroot -p密码;
2.登陆别的数据库
mysql -h127.0.0.1 -uroot -p密码;
mysql --h127.0.0.1 --uroot --p密码;
2.退出
1.exit;
2.quit;
SQL
1.SQL的含义
SQL:Structured Query Language
SQL是用于操作关系型数据库的语言(操作数据库的规则)
2.SQL通用语法
1.SQL语句可以单行或者多行书写,以分号结尾。
2.可以使用空格和缩进来增强语句的可读性。
3.Mysql数据库的SQL语句不区分大小写,关键字推荐使用大写
4.有三中注释
单行注释:--(空格)注释内容 或者 #注释内容(mysql特有)
多行注释:/*注释*/
3.SQL分类
1.DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
2.DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增,删,改。关键字:insert, delete, update 等
3.DQL(Data Query Language)数据查询语言
用来查询数据库中表的记录(数据)。关键字:select, where 等
4.DCL(Data Control Language)数据控制语言
用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等
DDL:操作数据库,表
1.操作数据库:CRUD
1.C(Create):创建
创建数据库:
CREATE DATABASE 数据库名;
创建数据库,判断不存在,在创建:
CREATE DATABASE IF NOT EXISTS;
创建数据库,并制定字符集
CREATE DATABASE 数据库名 CHARATCER SET 字符集名;
综合创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名 CHARATCER SET 字符集名称;
2.R(Retrieve):查询
查询所有数据库的名称:
SHOW DATABASES;
查询某个数据库的字符集:查询某个数据库的创建语句
SHOW CREATE DATABASE 数据库名;
3.U(Update):修改
修改数据库的字符集
ALTER DATABASE 数据库名 CHARACTER SET 字符集名;
4.D(Delete):删除
删除数据库
DROP DATABASE 数据库名;
先判断数据库是否存在,存在再删除
DROP DATABASE IF EXISTS 数据库名;
5.使用数据库
查询当前正在使用的数据库
SELECT DATABASE();
使用数据库
USE 数据库名;
2.操作表
1.C(Create):创建
1. CREATE TABLE 表名(列名1 数据类型1,列名2 数据类型2,....列名n 数据类型n);注意:最后一列不需要加逗号!
2. 常用数据类型:
1.int:整数类型
age int,
2.double:小数类型
score double(5,2) 有5位数,小数点后保留2位
3.date:日期,只包含年月日,yyyy-MM-dd
4.datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
5.timestamp:时间错类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss
如果不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
6.varchar:字符串
name varchar(20):姓名最大20个字符
zhangsan 8个字符 张三 2个字符
3. 复制表
CREATE TABLE 表名 LIKE 被复制的表名;
2.R(Retrieve):查询
查询某个数据中所有表名称
SHOW TABLES;
查询表结构
DESC 表名;
3.U(Update):修改
1. 修改表名
ALTER TABLE 表名 RENAME TO 新的表名;
2. 修改表的字符集
ALTER TABLE 表名 CHARACTER SET 字符集名称;
3. 添加一列
ALTER TABLE 表名 ADD 列名 数据类型;
4. 修改列名称 类型
ALTER TABLE 表名 CHANGE 列名 新列别 新数据类型;
ALTER TABLE 表名 MODIFY 列名 新数据类型;
5. 删除列
ALTER TABLE 表名 DROP 列名;
4.D(Delete):删除
DROP TABLE 表名;
DROP TABLE IF EXISTS 表名;
DML增删改表数据
1.表添加数据
1.添加指定列的数据
INSERT INTO 表名(列名1,列名2,...列名n) values (值1,值2,...值n);
2.添加所有列的数据
INSERT INTO 表名 VALUES(值1,值2,...值n);
注意:
除了数字类型,其他类型需要使用引号(单双都可以)引起来
2.表删除数据
1.删除指定的某些记录
DELETE FROM 表名 [WHERE 条件];
2.删除整个表的操作
DELETE FROM 表名; -----逐条删除表中的数据,效率低。
TRUNCATE TABLE 表名; -----先删除整个表,再创建一个表,效率高
3.表修改数据
UPDATE 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
如果不添加条件,会将表中的数据全部修改
DQL查询表中的记录
1.基础查询
1.多个字符段的查询
查询所有的表字段:SELECT * FROM 表名;
查询指定列表字段:SELECT 列名1,列名2...FROM 表名;
2.去重查询
SELECT DISTINCT 列名 FROM 表名;
3.四则运算计算列
SELECT IFNULL (列名1,0) + 列名2 FROM 表名称;
SELECT IFNULL(表达式1,表达式2)
表达式1:哪个字段需要判断是否为null
表达式2:如果该字段为null
4.查询到的结果起别名
SELECT 列名1 AS 别名1,列名2 别名2 FROM 表名称;
2.条件查询
1.与 &&
1.SELECT * FROM 表名称 WHERE age>20 && age<30;
2.SELECT * FROM 表名称 WHERE age>20 AND age<30;
3.SELECT * FROM 表名称 WHERE age BETWEEN 20 AND 30;
2.或 ||
1.SELECT * FROM 表名称 WHERE age=20 || age=30;
2.SELECT * FROM 表名称 WHERE age=20 OR age=30;
3.SELECT * FROM 表名称 WHERE age IN(20,30);
3.非 !
1.SELECT * FROM 表名称 WHERE address IS NULL; -- 居住地是Null
2.SELECT * FROM 表名称 WHERE address IS NOT NULL; -- 居住地不是Null
3.模糊查询 WHERE LIKE
1.两个占位符
1.'_' 下划线,表示1个字符
2.'%' 百分号,表示0个或多个字符
2.案例
1.查询姓'武'
SELECT * FROM hero WHERE name LIKE '武%';
2.查询姓'武'只有两个字
SELECT * FROM hero WHERE name LIKE '武_';
3.查询第二个字是'文'的
SELECT * FROM hero WHERE name LIKE '_文%';
4.查询只要带有'李'字的
SELECT * FROM hero WHERE name LIKE '%李%';