MySQL基础
1.基本知识
1.1安装
1.2设置字符集
为了让mysql数据库能够支持中文,命令:
show variables like 'char%'
再输入:
set character_set_database='gbk';
set character_set_server= 'gbk'; gbk(中文)
最后输入:
status
设置权限:
use mysql;
grant all privileges on *.* to 'root'@'%' identified by 密码 with grant option;
flush privileges;
1.3查看数据库
show databases;
1.4创建数据库
create databses mytest;(数据库名)
1.5切换当前数据库
use mytest;
mysql说明
- 用[]表示可选项
- mysql命令不区分大小写,命名规范:命令关键字使用大写,其他使用小写,避免大小写频繁切换。一般小写
- 命令关键字可以只写前面四个字符
DESCRIBE USER; DESCR user;
-
修改命令结束符
使用DELIMITER命令,eg:
DELIMITER //
使用默认“;”,
OPDELIMITER ;
2.mysql数据库和表
2.1创建数据库
使用create database或者create schema
CREATE DATABASE [IF NOT EXISTS] 数据库名
[DEFAULT] CHARACTER SET 字符集
| [DEFAULT] COLLATE 校对规则名
- IF NOT EXISTS:在创建数据库之前判断是否存在,存在则不创建;可以避免出现数据库已经存在而再创建的错误。
- CHARACTER SET:指定数据库字符采用默认字符集
- COLLATE:指定字符集的校对规则
eg:
CREATE DATABASE student;
CREATE DATABASE IF NOT EXISTS student;
2.2修改数据库
- ALTER DATABASE
ALTER DATABASE student
default character set gb2312
default collate gb2312_chinese_ci;
2.3删除数据库
- DROP DATABASE
DROP DATABASE [IF EXISTS] student(数据库名);
2.4创建表
CREATE TABLE [IF EXISTS] 表名
( [列定义] ……
| [表的索引定义]
)
[表选项] [select语句];
default:表示默认值
2.5复制表
CREATE DATABSE [IF EXISTS] 表名
[LIKE 已有表明]
|[as (复制表记录)];
eg:
CREATE DATABASE student LIKE test;
CREATE DATABASE student AS (select * from test);
2.6查看表的结构
describe 表名;
describe student;
2.7修改表的结构
- ALTER TABLE
ALTER TABLE 表名
ADD 列定义[FIRST | AFTER 列名]
|MODIFY 列定义
|ALTER 列名 {SET DEFAULT 值 |DROP DEFAULT}
|CHANGE 列名 原列名
|DROP 列名
|RENAME [TO] 新表名
- ADD:向列表中增添新列,FIRST|AFTER列名指定位置,默认为最后一列。
- MODIFY:修改指定列的数据类型
- ALTER:修改表中指定列的默认值,或者删除列的默认值
- CHANGE:修改列的名称
- DROP:删除列或约束
2.8修改表名
RENAME 老表名 TO 新表名
2.9删除表
DROP TABLE [IF EXISTS] 表名……
2.10插入记录
- INSERT
INSERT [INTO] 表名
[(列名,……)] values ({expr |default},……)
|SET 列名={expr |default},……
eg:
INSERT INTO STUDENT VALUES ('123','SHDHSU','36323');
INSERT INTO STUDENT(学号,姓名,学分) VALUES ('123','SHDHSU','36323');
INSERT INTO STUDENT 学号='123',姓名='SHDHSU',学分='36323';
- INSERT INTO …SELECT…
INSERT [INTO] 表名 [(列名,……)]
SELECT 语句
eg:
INSERT INTO student1 SELECT * FROM student;
- 插入图片
图片一般以路径的形式存储,当然也可以直接插入图片本身(LOAD_FILE函数)
INSERT INTO student VALUES('D:\IMAGE\ph');
INSERT INTO student VALUES(LOAD_FILE('D:\IMAGE\ph');
2.11替换旧记录
- REPLACE
REPLACE INTO student values('123','ashdh','23676');
2.12修改表
- 单个表(UPDATE)
UPDATE [LOW_PRIORITY] [IGNORE] 表名
SET 列名1=expr1 [,SET 列名2=expr2,……]
[WHERE 条件]
- 不设定where语句,则更新所有列
- where:指定删除记录条件
UPDATE student
SET 总学分=总学分+10;
UPDATE student
SET 学号='72812'
WHERE 姓名='李华';
- 多个表
UPDATE student,student1
SET student.name='hhjjj',student.name='hhjjjj'
where student.id=student1.id;
2.13 删除记录
DELETE FROM 表名 [WHERE条件]
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] 表名[.*] [,表名[.*]……]
FROM TABLE_REFERENCES
[WHERE where_definition]
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
from 表名[.*] [,表名[.*]……]
USING table_references
[WHERE where_definition]
2.14清除表数据
TRUNCATE TABLE 表名
- 语句将删除表中所有数据,无法恢复。
3.MySQL查询和视图
3.1查询
SELECT
[ALL | DISTINCT | DISTINCTROW]
列……
[FROM 表……]
[WHERE 条件]
[GROUP BY {列名 | 表达式 position} [ASC | DESC],……]
[HAVING 条件]
[ORDER BY {列名 | 表达式 position} [ASC | DESC],……]
[PROCEDURE 存储过程名(参数……)]
[INTO OUTFILE '文件名' [CHARACTER SET 字符集]]
export_options | INTO DUMPFILE '文件名' | INTO 变量名……]
[FOR UPDATE | LOCK IN SHARE MODE]