SQL:Structured Query Language, 结构化查询语言,SQL是用来存取关系数据库的语言,具有查询、操纵、定义和控制关系型数据库的四方面功能。其特点是:非过程性语言,那么什么是非过程语言呢?
过程性语言:当前的这条语句执行需要依赖于上一条或几条语句;
非过程性语言:可一条语句,就会执行一个结果。
SQL分类
(1)DDL (数据定义语言):Data Definition Language,用来定义数据库的对象,如数据表、视图、索引等;
(2)DML (数据操纵语言):Data Manipulation Language,在数据库表中更新,增加和删除记录,如 update, insert, delete;
(3)DCL (数据控制语言):Data Control Language,指用于设置用户权限和控制事务语句,如grant,revoke,if…else,while,begin transaction;
(4)DQL (数据查询语言):Data Query Language,如select。
1,创建数据库
语法 : create database 数据库名称 ; (创建数据库采用数据库服务器默认字符集 )
复杂写法 create database 数据库名称 character set 字符集 collate 比较规则 ;
每次创建一个数据库在数据存放目录中生成一个文件夹 , 每个文件夹中存在 db.opt 存放默认字符集和校对规则
例如:
创建一个名称为mydb1的数据库。 create database mydb1;
创建一个使用utf8字符集的mydb2数据库。 create database mydb2 character set utf8;
创建一个使用utf8字符集,并带校对规则的mydb3数据库。create database mydb3 character set utf8 collate utf8_bin;
2,查询数据库
show databases; —– 查看所有数据库
show create database 数据库名; —— 查看数据编码集
3,删除数据库
语法 :drop database 数据库名称;
4,修改数据库
修改数据库编码集 :语法:alter database 数据库名称 character set 字符集 collate 比较规则; eg:修改mydb2字符集为gbk; alter database mydb2 character set gbk;
切换当前使用数据库: use 数据库名称
查看当前正在使用数据库: select database();
下面是有关数据库中表的操作:
1,创建表
CREATE TABLE table_name
(
field1 datatype,
field2 datatype,
field3 datatype,
)character set 字符集 collate 校对规则
field:指定列名 datatype:指定列类型。一个数据表 可以存在很多列,每列具有类型和长度,创建表时没有指定 字符集,将采用数据库默认字符集,创建表之前 必须使用use db 语法指定操作数据库
创建数据表时,只有字符串类型必须写长度,而其他类型都有默认长度
MySQL常用数据类型
(1)字符串型:VARCHAR、CHAR,Java 中 String char 对应于mysql 中字符串型 char varchar ,其中char是定长,如果不够用空格补全, varchar是变长,经常使用。char的效率要高。例如:char(8) 保存star,因为star只有四个字符,所有会补充四个空格,成为8个字符存入 char(8)中 ,如果有 varchar(8) 自动根据存放内容改变长度
(2)大数据类型:BLOB、TEXT,java中 大数据类型 inputStream 二进制文件和Reader文本文件对应于mysql 大数据类型 blob(存放大二进制数据) text(存放大的文本文件),tinyblob tinytext 255字节 blob text 64KB mediumblob mediumtext 16MB longblob longtext 4GB。
(3)数值型:java 中 byte short int long float double对应于 mysql 中数值类型 TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
(4)逻辑型:BIT,java 中 boolean对应于mysql 逻辑型bit 存放一位数值 0 或者1
(5)日期型:DATE、TIME、DATETIME、TIMESTAMP。mysql 日期类型 date (只有日期) time(只有时间) datetime(日期时间都有) timestamp(日期时间都有 )datetime和timestamp 表现形式上完全相同,区别就在于timestamp 在数据库可以自定更新(当前时间),即datetime需要手动录入时间,timestamp若不传入数据,会默认选择当前系统的时间。
定义单表字段的约束
约束是用来保证数据有效性和完整性,下面为约束的几种类型
(1)定义主键约束(primary key ):信息记录某个字段可以唯一区分其他信息记录,这个字段就可以是主键 (唯一 非空),不允许为空,不允许重复。
删除主键:alter table tablename drop primary key ;
主键自动增长 :auto_increment
(2)唯一约束(unique):该字段的值不允许重复,一张表中可以有很多个唯一约束,只能有一个(两个)作为主键约束。eg:name varchar(20) unique;
(3)非空约束(not null ):该字段的值不能为空,eg:salary double not null。
举例:如果主键约束类型为 数值型 int bigint ,添加auto_increment 自动增长
create table employee2 (
id int primary key auto_increment,
name varchar(20) unique not null,
gender varchar(20) not null,
birthday date not null,
entry_date date not null,
job varchar(30) not null,
salary double not null,
resume longtext
);
2,数据表删除
语法:drop table 表名;
3,查看数据表结构
desc 表名; 查看表结构
show tables ; 查看当前库内所有表名
show create table 表名; 查看建表语句和字符集