数据库连接

用户:root
密码: 空的
mysql -h 主机名 -u 用户名 -p
输入密码

用户相关

创建用户的格式:
GRANT 权限 ON 数据库 TO 用户名 @登录主机名(localhost,%)IDENTIFIED BY "密码";

比如: GRANT SELECT,INSERT,UPDATE,DELETE ON . TO Bill@localhost IDENTIFIED BY "password";

重新登录:
mysql -u Bill -q
password

权限
- SELECT -- 查询
- DELEATE -- 删除
- INSERT -- 插入
- UPDATE --更新

库操作

  • USE DATABASE -- 用表
  • SHOW DATABASE--爆库

表与字段操作

字段类型
DATE & TIME 类型:
- DATE: 2018-2-4
- DATETIME: 2018-2-4 10:41:26
- TIMESTAMP:201824104148
- TIME: 10:42:04
- YEAR: 2018
STRING 类型
- VARCHAR 比较常用
- CHAR
- ...

字段属性
- BINARY : 字符串类型,区分大小写
- UNSIGNED : 无符号数,是个正数
- UNSIGNED-ZEROFIED : ..

创建表
CREATE TABLE 【name】 ( 【column name 】 【column data form 】 (SIZE) 【NOT NULL】;
e.g:: CREATE TABLE my2(name varchar(12) NOT NULL,...);

添加表
ALERT TABLE 【tablename】 ADD 【columnname】 【data form】 (SIZE) 【NOT NULL】;
e.g:: ALERT TABLE Bill ADD phonenum
varchar(11) NOT NULL;

修改表名
ALERT TABLE bill RENAME AS mydb;

修改表的字段属性
ALTER TABLE bill CHANGE phonenumber sex char(8) NOT NULL;

爆表
DESC bill;

数据表默认字符集

查看数据库默认字符集
查看字符集

SHOW VARIABLES LIKE '%char%';

| Variable_name            | Value                                           |
+--------------------------+-------------------------------------------------+
| character_set_client     | gbk                                             |
| character_set_connection | gbk                                             |
| character_set_database   | latin1                                          |
| character_set_filesystem | binary                                          |
| character_set_results    | gbk                                             |
| character_set_server     | latin1                                          |
| character_set_system     | utf8                                            |
| character_sets_dir       | c:\wamp64\bin\mysql\mysql5.7.19\share\charsets\ |
+--------------------------+-------------------------------------------------+
8 rows in set, 1 warning (0.00 sec)

修改默认字符集
修改配置文件 MYSQL/my.ini
查找 character-set-server

索引

分类
1. 主键索引 PRIMARY KEY --一个表中最多只能有一个主键索引
2. 唯一索引 UNIQUE --一个表中可以有多个唯一索引
3. 常规索引 INDEX
4. 全文索引 FULLTEXT

在创建的时候增加建
方法1:
CREATE TABLE user1(id int(100) PRIMARY KEY,name varchar(100) );
方法2:
CREATE TABLE user1(id int(100) ,name varchar(100),PRIMARY KEY(id) );

数据表类型
MYSQL 常用的数据表类型为MYISAM何InnoDB,后者功能比较多,前者比较轻量。
通过ENGEINE 来指定
指定数据表类型:
CREATE TABLE T(a int(10) not null primary key) ENGINE=InnoDB;

SQL 语言

SQL语言分三个部分:
1. DDL 数据定义语言,用于定义和管理数据库对象(之前的笔记)
2. DML:数据操作语言,用于操作数据库里的数据
3. DQL:数据查询语言,用于查询数据库里的数据
4. DCL:数据控制语言,用于管理数据库

数据的添加,更新和删除

数据添加
1.按顺序一个个来添加;
INSERT INTO 【tablename】 VALUES(【value1】,【value2】);
2.指定字段来添加:
INSERT INTO 【tablename】(【字段名】)VALUES(
【VALUE】);

数据更新
UPDATE [tablename] SET id=[ ],name = [ ] WHERE id=[ ];
where 语句永远在最后

mysql> UPDATE user1 SET id = 100 WHERE name = "shaobaobao";
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2  Changed: 0  Warnings: 0

有条件的更新:
UPDATE user1 SET name="SHAOBAO" ORDER BY id DESC LIMIT 1;

分类讲解: UPDATE 然后选择一个表
SET 为更变内容
ORDER BY id 为按照id从小到大排列,加了DESC后为从大到小排列,LIMIT 1 为 限定更变操作为为1个

删除
DELETE FROM user1 WHERE id=【】
删除ID 为【】的字段;
DELETE FORM user1 ORDER BY id DESC LIMIT 2
删除ID 最大的两条记录。

数据查询

非常重要!
全部字段把爆破
SELECT * FROM USER1;
只查询前两条记录
SELCT * FROM LIMIT 2;
只查询想要的字段
SELECT name FROM user2 ;
综合查询
SELECT name,id FROM user2;
别名输出
SELECT id as "ID号码" , name as "姓名" FROM user2;
如果乱码 那么就SET 字段 GB2312
as 可以去掉的
不输出重复的信息
SELECT DISTINCT
注意:如果给出两个检索信息,比如nmae,id 必须两个都是同一个重复才能让distinct起到作用
查询表达式

SELECT 4*5;

+-----+
| 4*5 |
+-----+
|  20 |
+-----+
1 row in set (0.00 sec

就很刺激

mysql> select * from lesson
-> ;

+----+---------+-------+
| id | name    | price |
+----+---------+-------+
|  1 | php     |   100 |
|  2 | andorid |    90 |
|  3 | python  |   120 |
+----+---------+-------+
3 rows in set (0.00 sec)

mysql> SELECT id "课程ID" ,name "课程名",price "课程价格" , price*0.7 "VIP价格" from lesson
-> ;

+--------+---------+----------+---------+
| 课程ID | 课程名  | 课程价格 | VIP价格 |
+--------+---------+----------+---------+
|      1 | php     |      100 |    70.0 |
|      2 | andorid |       90 |    63.0 |
|      3 | python  |      120 |    84.0 |
+--------+---------+----------+---------+

select的简单运用

WHERE子句的条件检索
实际运用 查询优惠后价格在80一下的数据。

mysql> SELECT id "课程ID" ,name "课程名",price "课程价格" , price0.7 "VIP价格" from lesson where price0.7<80;

+--------+---------+----------+---------+
| 课程ID | 课程名  | 课程价格 | VIP价格 |
+--------+---------+----------+---------+
|      1 | php     |      100 |    70.0 |
|      2 | andorid |       90 |    63.0 |
+--------+---------+----------+---------+
2 rows in set (0.00 sec)
  • 或运算 ||
  • 并运算 &&
  • ...

查询非空数据
WHERE link is NULL/NOT NULL;
范围查询
SELECT * FROM lesson WHERE price BETWEEN 70 and 100;
(and 要小写)
IN(70,100);
BETWEEN 和 IN 都是闭区间


模糊查询
要点:
- % 0个或多个任意字符
- _ 1个任意字符

关键词: LIKE

寻找以P开头的字符

SELECT * FROM lesson where name LIKE "P%";

+----+--------+-------+---------+---------+
| id | name   | price | url     | url1    |
+----+--------+-------+---------+---------+
|  1 | php    |   100 | abc.com | abc.com |
|  3 | python |   120 | NULL    |         |
+----+--------+-------+---------+---------+
  • 如果结尾就构造payload = "%p"
  • 不以P开头就是not like
  • 中间有O payload= "%O%";
  • P中间三个字符P payload="P___P"

多表查询
有条件的链接:利用WHERE子句

select lesson.name "课程名称"  , teacher.name "名字" FROM lesson,teacher WHERE lesson.name=teacher.lesson;
    +----------+--------+
    | 课程名称 | 名字   |
    +----------+--------+
    | php      | SHAOer |
    | python   | baobao |
    +----------+--------+

嵌套查询
SELECT * FROM lesson WHERE name IN (SELECT name FROM teacher);

函数

  • SUM 求和
  • AVG 平均
  • COUNT 记录数
  • MAX 最大值
  • MIN 最小值

分组
首先定义一个类别数据

然后 SELECT * FORM 【】 GROUP BY xxx

mysql> select class "分组", SUM(price) "总价",avg(price)"平均价",count(*) "记录" from lesson group by class ;

+------+------+----------+------+
| 分组 | 总价 | 平均价   | 记录 |
+------+------+----------+------+
|    1 |  190 |  95.0000 |    2 |
|    2 |  220 | 110.0000 |    2 |
|    3 |  303 | 151.5000 |    2 |
+------+------+----------+------+

mysql> select * from lesson;

+----+---------+-------+-------+
| id | name    | price | class |
+----+---------+-------+-------+
|  1 | php     |   100 |     1 |
|  2 | andorid |    90 |     1 |
|  3 | python  |   120 |     2 |
|  4 | C++     |   100 |     2 |
|  5 | C       |   103 |     3 |
|  6 | java    |   200 |     3 |
+----+---------+-------+-------+