本文涉及的是MySQL数据库的一些常用基础语法:
创建数据库设置默认编码1create database history_db character set utf8;
查看数据库1show databases;
为数据库创建表首先切换到要使用的数据库1use history_db;表创建,如为history_db数据库创建表history1
2
3
4
5
6
7CREATE TABLE history(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, # 自增主键
e_id VARCHAR(600) NOT NULL DEFAULT '', # e_id
day VARCHAR(600) NOT NULL DEFAULT '', # 天
date VARCHAR(600) NOT NULL DEFAULT '', # 日期
title VARCHAR(600) NOT NULL DEFAULT '' # 历史事件
)DEFAULT CHARSET=UTF8 ENGINE=INNODB; #设置默认配置
查看表1show tables;
修改表字段名,如day修改为h_day1alter table history change day h_day varchar(600) not null DEFAULT '';
修改表字段类型,如 varchar改为text1alter table history_detail modify column h_content text(0);
清空数据表,有两种情况使用DELETE ,数据可清除,但是自增字段不会被重置为初始值1delete from history
eg:DELETE删除前后
使用TRUNCATE,即可清除数据,自增字段也会被重置1TRUNCATE TABLE history
eg:TRUNCATE删除前后
一对多 (使用非主键,作为其他表的外键)
如:现有表history_detail,已创建自增主键id1
2
3
4
5
6
7CREATE TABLE history_detail(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, # 主键
e_id VARCHAR(600) NOT NULL DEFAULT '', # e_id
h_picNo VARCHAR(600) NOT NULL DEFAULT '', # 天
h_content VARCHAR(600) NOT NULL DEFAULT '', # 日期
h_title VARCHAR(600) NOT NULL DEFAULT '' # 历史事件
)DEFAULT CHARSET=UTF8 ENGINE=INNODB;
现要求使用非主键e_id作为另一表history_pic的外键,那么,需要添加e_id为唯一键,才可以最为表history_pic的外键:1alter table history_detail add unique key(e_id);
创建带有外键约束的表history_pic:1
2
3
4
5
6
7CREATE TABLE history_pic(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, # 主键
pic_title VARCHAR(100) NOT NULL DEFAULT '',
pic_url VARCHAR(200) NOT NULL DEFAULT '',
e_id VARCHAR(600) NOT NULL DEFAULT '',
CONSTRAINT pic_fk FOREIGN KEY(e_id) REFERENCES history_detail(e_id) #设置外键约束
)DEFAULT CHARSET=UTF8 ENGINE=INNODB;
设置自增主键的初始值从1开始1alter table history_pic AUTO_INCREMENT=1;
修改字段的长度1alter table history_detail modify column h_content varchar(200);
增加表字段,如(alter table user add age int,add address varchar(11);)1alter table history_pic add pic_id int;
删除表字段
eg:1alter table user drop column age,drop column address;
清除一个带有其他表外键的表数据
eg:
这时需要如下操作:1
2
3SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE history_detail;
SET FOREIGN_KEY_CHECKS = 1;
统计表中重复数据1
2
3
4
5
6
7
8
9
10
11
12
13
14
15SELECT
count(*) AS repeat_count,t.e_id
FROM
history t
GROUP BY
t.e_id
HAVING
repeat_count > 1;
eg:
使用DISTINCT关键字过滤重复数据1
2
3
4
5
6
7SELECT
DISTINCT t.e_id
FROM
history t;
删除重复数据1
2
3
4
5
6
7
8
9
10
11
12
13
14
15create table t_temp SELECT
t.e_id,t.h_day,h_date,t.h_title
FROM
history t
GROUP BY
t.e_id,t.h_day,h_date,t.h_title;
DROP TABLE history;
ALTER TABLE t_temp RENAME TO history;
数据排序DESC降序排列,默认升序排列1select * from room where uid='1329907' order by addtime DESC根据 “列” 从小到大排列1select * from 表 order by 列 asc根据 “列” 从大到小排列1select * from 表 order by 列 desc根据 “列1” 从大到小排列,如果相同则按列2从小到大排序1select * from 表 order by 列1 desc,列2 asc