Mysql基础学习

创建数据表

CREATE TABLE table_name (column_name column_type);

create table test(
  `userid` int auto_increment,
  `username` varchar(32) not null,
  `userage` int not null,
  primary key ('userid')
)

1 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
2 AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
3 PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
4 ENGINE 设置存储引擎,CHARSET 设置编码。

删除数据表

DROP TABLE table_name ;

drop table test;

1 删除表内数据,用 delete : delete from 表名 where 删除条件;
2 清除表内数据,保存表结构,用 truncate: truncate table 表名;
3 删除表用 drop,就是啥都没了:DROP TABLE 表名;
4 delete 操作以后,使用 optimize table table_name ,会立刻释放磁盘空间

插入数据

INSERT INTO table_name (xx)values (xx)

insert into test (username,userage) values ('test',100)

查询数据

select column_name from 表名 [where clause] [limit n] [offset m]

select username from test where userid=1 limit 1 offset 1

基本查询语句

SELECT * FROM websites;                      /* 查询表所有数据 */

SELECT NAME FROM websites;                   /* 查询表字段数据 */

SELECT * FROM websites where name = "广西";   /* 查询表字段下条件数据 */

SELECT * from websites where name like "_o%"; /* 模糊查询表下数据 */

SELECT * FROM websites where id BETWEEN "1" AND "5";    /* 查询表下字段范围数据 */

SELECT * FROM websites WHERE name in ("广西","百度");    /* 查询表字段下固定条件数据 */

SELECT DISTINCT country FROM Websites;                  /* 查询去重值 */

SELECT * FROM Websites WHERE country = "CN" AND alexa > 50;  /*查询表下范围条件数据*/

SELECT * FROM Websites WHERE country = "USA" OR country="sh"; /* 查询表下条件不同值 */

SELECT * FROM Websites ORDER BY alexa;                      /* 查询表下值排序结果 */

SELECT * FROM Websites ORDER BY alexa DESC;                 /* 查询表下排序结果降序 */

SELECT * FROM Websites LIMIT 2;      /* 查询表下范围数据 */

SELECT name as zzz from websites;    /*别名查询表下数据*/

分页查询案例

select  *  from _table limit (page_number-1)*lines_perpage, lines_perpage
或者
select * from _table limit lines_perpage offset (page_number-1)*lines_perpage

1 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
2 SELECT 命令可以读取一条或者多条记录
3你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
4 你可以使用 WHERE 语句来包含任何条件。
5 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
6 你可以使用 AND 或者 OR 指定一个或多个条件。

修改数据

UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]

update test set username='xx' where userid=1;

1 你可以同时更新一个或多个字段。
2 你可以在 WHERE 子句中指定任何条件。
3 你可以在一个单独表中同时更新数据。

删除数据

DELETE FROM table_name [WHERE Clause]

delete from test where username='xx';

1 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除
2 你可以在 WHERE 子句中指定任何条件
3 您可以在单个表中一次性删除记录。

LIKE子句

select * from table_name where column_name like %xx;
匹配模式

'%a'     //以a结尾的数据
'a%'     //以a开头的数据
'%a%'    //含有a的数据
'_a_'    //三位且中间字母是a的
'_a'     //两位且结尾字母是a的
'a_'     //两位且开头字母是a的'%a'  

1 你可以使用LIKE子句代替等号 =。
2 LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
3 你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。

union操作符

UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
select XX UNION [ALL | DISTINCT] select XX

1 ALL所有,包含重复数据。
2 DISTINCT删除结果集中重复的数据,默认值。

排序

SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]

select * from test order by userid ASC

你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
你可以设定多个字段来排序。
你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
你可以添加 WHERE...LIKE 子句来设置条件。

连接使用

SELECT XX FROM TABLE_NAME JOIN TABLE_NAME ON 条件

create table user (`username` varchar(32),`time` DATETIME);
select a.username b.time from test a join user b on b.username=a.username;

INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

正则匹配使用

SELECT name FROM person_tbl WHERE name REGEXP 正则表达式;

select username from test where username regexp '^xx'

事务

事务处理主要有两种方法:
BEGIN 开始一个事务
ROLLBACK 事务回滚
COMMIT 事务确认
直接用 SET 来改变 MySQL 的自动提交模式:
SET AUTOCOMMIT=0 禁止自动提交
SET AUTOCOMMIT=1 开启自动提交

begin;
insert into test(username,userage) values('zz',11);
commit;
insert into test(username,userage) values('zzzz',1111);
rollback;

在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
事务用来管理 insert,update,delete 语句

ALTER命令

1 添加行

alter table test add country varchar(32);
show columns from test;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| userid   | int(11)     | NO   | PRI | NULL    | auto_increment |
| username | varchar(32) | NO   |     | NULL    |                |
| userage  | int(11)     | YES  |     | NULL    |                |
| time     | datetime    | YES  |     | NULL    |                |
| country  | varchar(32) | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

2 修改字段名和类型

alter table test change country countrys varchar(42);
show columns from test;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| userid   | int(11)     | NO   | PRI | NULL    | auto_increment |
| username | varchar(32) | NO   |     | NULL    |                |
| userage  | int(11)     | YES  |     | NULL    |                |
| time     | datetime    | YES  |     | NULL    |                |
| countrys | varchar(42) | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

3 删除行

alter table test drop country;
show columns from test;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| userid   | int(11)     | NO   | PRI | NULL    | auto_increment |
| username | varchar(32) | NO   |     | NULL    |                |
| userage  | int(11)     | YES  |     | NULL    |                |
| time     | datetime    | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

索引

1 添加索引和删除索引。

alter table test add index  id (username);
alter table test drop index id;

Join

mysql> select * from user_write;
+----+-----+---------------+---------------------+
| id | uid | write         | ctime               |
+----+-----+---------------+---------------------+
|  1 |   1 | 学习写        | 2018-10-19 15:20:21 |
|  2 |   2 | 学习写sql     | 2018-10-19 15:30:21 |
|  3 |   1 | 学习写Html    | 2018-10-19 15:30:21 |
+----+-----+---------------+---------------------+
3 rows in set (0.00 sec)

mysql> select * from user_read;
+----+-----+---------------+---------------------+
| id | uid | read          | ctime               |
+----+-----+---------------+---------------------+
|  1 |   1 | 学习          | 2018-10-19 14:49:21 |
|  2 |   2 | 学习写sql     | 2018-10-19 14:54:00 |
|  3 |   3 | 学习写Html    | 2018-10-19 15:12:46 |
+----+-----+---------------+---------------------+
3 rows in set (0.01 sec)

mysql> select * from user;
+----+----------+-----+-----+
| id | username | age | sex |
+----+----------+-----+-----+
|  1 | 西门0     |  24 |   1 |
|  2 | 西门1    |  24 |   1 |
|  3 | 西门2    |  24 |   1 |
|  4 | 西门3    |  33 |   2 |
+----+----------+-----+-----+
3 rows in set (0.01 sec)

1 怎么找到只read的人全部信息?

mysql> select * from user inner join user_read on user.id=user_read.uid;
+----+----------+-----+-----+----+-----+---------------+---------------------+
| id | username | age | sex | id | uid | read          | ctime               |
+----+----------+-----+-----+----+-----+---------------+---------------------+
|  1 | 西门0    |  24 |   1 |  1 |   1 | 学习          | 2018-10-19 14:49:21 |
|  2 | 西门1    |  24 |   1 |  2 |   2 | 学习写sql     | 2018-10-19 14:54:00 |
|  3 | 西门2    |  24 |   1 |  3 |   3 | 学习写Html    | 2018-10-19 15:12:46 |
+----+----------+-----+-----+----+-----+---------------+---------------------+
3 rows in set (0.01 sec)

2 怎么找到只write的人全部信息?

mysql> select * from user inner join user_write on user.id=user_write.uid;
+----+----------+-----+-----+----+-----+---------------+---------------------+
| id | username | age | sex | id | uid | write         | ctime               |
+----+----------+-----+-----+----+-----+---------------+---------------------+
|  1 | 杨旭     |  24 |   1 |  1 |   1 | 学习写        | 2018-10-19 15:20:21 |
|  1 | 杨旭     |  24 |   1 |  3 |   1 | 学习写Html    | 2018-10-19 15:30:21 |
|  2 | 西门1    |  24 |   1 |  2 |   2 | 学习写sql     | 2018-10-19 15:30:21 |
+----+----------+-----+-----+----+-----+---------------+---------------------+
3 rows in set (0.00 sec)

3 找到write和read的人?

mysql> select * from user inner join user_read on user.id=user_read.uid inner join user_write on user.id=user_write.uid;
+----+----------+-----+-----+----+-----+--------------+---------------------+----+-----+---------------+---------------------+
| id | username | age | sex | id | uid | read         | ctime               | id | uid | write         | ctime               |
+----+----------+-----+-----+----+-----+--------------+---------------------+----+-----+---------------+---------------------+
|  1 | 西门0    |  24 |   1 |  1 |   1 | 学习         | 2018-10-19 14:49:21 |  1 |   1 | 学习写        | 2018-10-19 15:20:21 |
|  2 | 西门1    |  24 |   1 |  2 |   2 | 学习写sql    | 2018-10-19 14:54:00 |  2 |   2 | 学习写sql     | 2018-10-19 15:30:21 |
|  1 | 西门0    |  24 |   1 |  1 |   1 | 学习         | 2018-10-19 14:49:21 |  3 |   1 | 学习写Html    | 2018-10-19 15:30:21 |
+----+----------+-----+-----+----+-----+--------------+---------------------+----+-----+---------------+---------------------+
3 rows in set (0.01 sec)

4 找到不读人?

mysql> select * from user left join user_read on user.id=user_read.uid where user_read.id is null;
+----+----------+-----+-----+------+------+------+-------+
| id | username | age | sex | id   | uid  | read | ctime |
+----+----------+-----+-----+------+------+------+-------+
|  4 | 西门3    |  33 |   2 | NULL | NULL | NULL | NULL  |
+----+----------+-----+-----+------+------+------+-------+
1 row in set (0.00 sec)

5 找到不写的人?

mysql> select * from user left join user_write on user.id=user_write.uid where user_write.id is null;
+----+----------+-----+-----+------+------+-------+-------+
| id | username | age | sex | id   | uid  | write | ctime |
+----+----------+-----+-----+------+------+-------+-------+
|  3 | 西门2    |  24 |   1 | NULL | NULL | NULL  | NULL  |
|  4 | 西门3    |  33 |   2 | NULL | NULL | NULL  | NULL  |
+----+----------+-----+-----+------+------+-------+-------+
2 rows in set (0.00 sec)

6 找到不读不写的人?

mysql> select * from user left join user_read on user.id=user_read.uid left join user_write on user.id=user_write.uid where user_read.id is null and user_write.id is null;
+----+----------+-----+-----+------+------+------+-------+------+------+-------+-------+
| id | username | age | sex | id   | uid  | read | ctime | id   | uid  | write | ctime |
+----+----------+-----+-----+------+------+------+-------+------+------+-------+-------+
|  4 | 西门3    |  33 |   2 | NULL | NULL | NULL | NULL  | NULL | NULL | NULL  | NULL  |
+----+----------+-----+-----+------+------+------+-------+------+------+-------+-------+
1 row in set (0.00 sec)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343