本文共 5097 字,大约阅读时间需要 16 分钟。
Java的JDBC需要用到的SQL基础
SHOW DATABASES;
USE 数据库名;
CREATE DATABASES 数据库名;
DROP DATABASES 数据库名;
ALTER DATABASES 数据库名 CHARACTER SET 编码;
INT
整型
DOUBLE
浮点型 , DOUBLE(5.2)
表示最多5位,必须有两位小数
DECIMAL
浮点型 ,不会出现精度缺失问题,在钱方面使用
CHAR
字符串类型(固定长度),CHAR(255)
表示最长255,会补足
VARCHAR
字符串类型(可变长度),VARCHAR(65535)
表示最长65535,不补足。有专门字节记录长度
BLOB
字节类型
DATE
日期类型(yyyy-MM-dd)
TIME
时间类型(hh:mm:ss)
TIMESTAMP
时间戳类型(有年月日,也有时分秒)
CREATE TABLE 表名{ 列名1 列类型1; ... 列名n 列类型n;};
SHOW TABLES;
DESC 表名;
DROP TABLE 表名;
ALTER TABLE 表名 ADD(列名 列类型; ...);
修改列类型 ALTER TABLE 表名 MODIFY 列名 列类型;
修改列名 ALTER TABLE 表名 ADD 原列名 新列名 列类型;
删除列 ALTER TABLE 表名 DROP 列名;
修改表名称 ALTER TABLE 原表名 RENAME TO 新表名;
INSERT INTO 表名(列名1,列名2,...) VALUES(列值1,列值2,...);
插入所有列(值的个数必须是该表列的个数,值的顺序也必须对应): INSERT INTO 表名 VALUES(列值1,列值2,...);
UPDATE 表名 SET 列名1 = 列值1,列名2 = 列值2,... [WHERE 条件];
条件必须是boolean类型的值或者表达式DELETE FROM 表名 [WHERE 条件];
TRUNCATE TABLE 表名 ;
无法回滚(先删除,再创建新的表)SELECT * FROM 表名;
查询指定列:SELECT 列名1,列名2,... FROM 表名;
查询指定列(当查询结果中有多行一模一样的时,只显示一行): SELECT DISTINCT * | 列名1,列名2,... FROM 表名;
列运算(原表不变): .数量类型的列可以做加减乘除运算SELECT 列名[*1] FROM 表名;
.字符串类型的列可以做连接运算SELECT CONCAT(['我是'],列名) FROM 表名;
.给列起别名SELECT IFNULL (列名,别名);
SELECT * FROM 表名 WHERE 条件;
模糊查询:SELECT * FROM 表名 WHERE 列名 LIKE 条件;
‘_’ 一个字符, ‘%’ 0-n个字符SELECT * FROM WHERE 表名 ORDER BY 列名 ASC ;
SELECT * FROM WHERE 表名 ORDER BY 列名 DESC;
SELECT * FROM WHERE 表名 ORDER BY 列名 ASC . 列名 DESC;
用来做某列的纵向运算
COUNT
表中(所有列都不为NULL的)记录的行数SELECT COUNT(列名) FROM 表名;
MAX
查询某列的最高值 MIN
查询某列的最低值 SUM
查询某列的和 AVG
查询某列的平均值 把记录使用某一列进行分组,然后查询组信息
SELECT 条件列名 , COUNT(*) FROM 表名 GROUP BY 条件列名;
用来限定结果的起始行以及总行数(是MySQL的方言)
SELECT * FROM 表名 LIMIT 起始行数 , 总行数;
创建用户
CREATE USER 用户名@IP地址 IDENTIFIED BY '密码';
指定IP地址才能登录,如果把IP地址改为’%’,则任意IP地址能登录 给用户授权
GRANT 权限1,权限2,... ON 数据库 . * TO 用户名@IP地址;
撤销授权
REVOKE 权限1,权限2,... ON 数据库 . * FROM 用户名@IP地址;
查看权限
SHOW GRANTS FOR 用户名@IP地址;
删除用户
DROP USER 用户名@IP地址;
SHOW VARIABLES LIKE 'char%';
character_set_client
:server解析客户端sql语句的字符集
character_set_results
:server返回给客户端的查询结果或者错误提示的字符集编码 character_set_server
:服务器默认字符集编码 character_set_database
:默认数据库的字符集编码 character_set_connection
:字符串字面值(literal strings)的字符集 character_set_system
:mysqlserver用来存储元数据的编码,通常就是utf8,不要去改动它 character_set_dir
:mysql字符集编码存储文件夹 character_set_filesystem
:文件系统字符集编码,主要用于解析用于文件名称的字符串字面值 set character_set_client = gbk;
(2)在总配置文件(my.ini)中设置 如:default_character_set = gbk;
[可以同时修改三个变量(client,results,connections)]安装MySQL时,默认为utf8
也可以设置(在my.ini中设置) 如:character_set_server = utf8;
(1).不要打分号,不要登录mysql,直接在cmd下运行
(2).生成的脚本文件不包含create database语句mysqldump -u用户名 -p密码 数据库名 > 生成的脚本文件路径;
不要打分号,不要登录mysql,直接在cmd下运行
(1)mysql -u用户名 -p密码 数据库名 < 生成的脚本文件路径;
(2)先登录mysql,然后source SQL脚本路径
CREATE TABLE 表名( 列名1 列类型1 PRIMARY KEY, ...);
CREATE TABLE 表名( 列名1 列类型1 , ... PRIMARY KEY(列名1),);
ALTER TABLE 表名 ADD PRIMARY KEY(列名 );
ALTER TABLE 表名 DROP PRIMARY KEY;
CREATE TABLE 表名( 列名1 列类型1 PRIMARY KEY AUTO_INCREMENT, ...);
ALTER TABLE 表名 CHANGE 主键名 主键名 类型 AUTO_INCREMENT ;
ALTER TABLE 表名 CHANGE 主键名 主键名 类型 ;
INSERT INTO 表名(列...) VALUES (列值...);
因为某些列不能设为NULL值,所以要加非空约束
CREATE TABLE 表名( ... 列名 列类型 NOT NULL, ...);
因为某些列不能设为重复值,所以要加唯一约束
CREATE TABLE 表名( ... 列名 列类型 UNIQUE, ...);
要求:必须是另一张表的主键的值,可以重复,可以为空
ALTER TABLE 表名1 ADD CONSTRAINT 表1的列名 FOREING KEY(表1的列名) REFERENCES 表2(列);
ALTER TABLE 表名 FOREING KEY 列名;
1:n
1:1
:加外键约束 n:n
:使用第三张表,引用其它两张表的主键要求:被合并的表中,列的类型与列的数量相同
SELECT * FROM 表名1UNION (ALL) //(不)去除重复行SELECT * FROM 表名2;
SELECT * FROM 表名1 别名1 , 表名2 别名2 WHERE 别名1.xx = 别名2.xx;
SQL标准语言SELECT * FROM 表名1 别名1 INNER JOIN 表名2 别名2 ON 别名1.xx = 别名2.xx;
SQL自然语言SELECT * FROM 表名1 别名1 NATURAL JOIN 表名2 别名2;
SELECT * FROM 表名1 别名1 LEFT OUTER JOIN 表名2 别名2 ON 别名1.xx = 别名2.xx;
右外(自然)连接 SELECT * FROM 表名1 别名1 NATURAL RIGHT OUTER JOIN 表名2 别名2 ON 别名1.xx = 别名2.xx;
SELECT * FROM 表名1 别名1 UNION 表名2 别名2 ON 别名1.xx = 别名2.xx;
查询中有查询(查看SELECT关键字的个数)
SELECT * FROM 表名1 别名1 WHERE 列1 ['=' '!=' ' <' '>' '<=' '>='] (SELECT * FROM 表名2 别名2 WHERE 条件);
多行单列 SELECT * FROM 表名1 别名1 WHERE 列1 ['IN' 'ALL' ' ANY'] (SELECT * FROM 表名2 别名2 WHERE 条件);
单行单列 SELECT * FROM 表名1 别名1 WHERE (列1,列2) IN (SELECT * FROM 表名2 别名2 WHERE 条件);
单行单列 SELECT * FROM 表名1 别名1 (SELECT * FROM 表名2 别名2 WHERE 条件) WHERE 条件;
两天
'=' '!=' ' <' '>' '<=' '>=' 'BETWEEN ... AND' 'IN(...)' 'IS NULL ' 'NOT' 'OR ' 'AND'
转载地址:http://ldozi.baihongyu.com/