1、sql介绍
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
2、MYSQL-SQL语句分类
DML(data manipulation language)是数据操纵语言:
(开发人员常用的命令)命令有SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的表数据进行操作的语言。
DDL(data definitionlanguage)是数据定义语言:
(DBA用,开发人员很少用)命令有show,ALTER,CREATE、DROP,等,DDL主要是用在对数据库实例、表、列等数据库对象的定义和操作。
DCL(DataControlLanguage)是数据库控制语言:
(DBA用)是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。
3、常用DDL命令操作
数据库命名:数据库实例名、表名、列名通常单词都是小写字母通过下划线分隔,很多数据库里不区分大小写。
1)数据库实例相关
数据库实例:一个数据库服务器可以有很多数据库实例,一般一个数据库实例对应一个项目(产品),每个实例里可以有很多张表(实体),可以把数据库实例理解为表的仓库。
简单理解:对应java的包,包是组织管理类,数据库实例组织管理表。
1.1、查看所有数据库实例
SHOW DATABASES;
1.2、创建数据库实例
CREATE DATABASE dbname;
1.3、选择将要操作的数据库实例
USE dbname;
1.4、删除数据库实例
DROP DATABASE dbname;
DROP DATABASE if exists dbname;
2)数据库中表相关
表中相关概念
1)表(实体):可以理解为就是java中的类,类可以有多个对象,表可以有多条记录。类中定义了对象拥有的属性(有类型)。
表中定义了记录的各种列(有类型)。表中可以存储很多的记录。
2)列(字段)(属性):可以理解为java中类的成员变量,每一条记录可以有多个列组成,如:张三,18,男,170。这条记录,分成了多个列存储,可更加高效管理数据。
3)类型(域):为列指定的数据类型,与java数据类型(字符串,数字,时间)类似。
4)主键(关键字):用来判断不同记录,每一条记录的主键都不同,主键是特殊的列或列组合(联合主键),理解为java的对象的地址。
例如:人的对象的地址,手的对象的地址。
5)外键:用来指定该列数据,参考了某个表的列,该列数据依赖某一个参考列。不能随便填值,必须是参考列的值或null,可以理解为java类中组合其他类(成员变量),该值只能是其他类的对象的地址或null。
例如:人的对象里持有的手的对象的地址。
注意:某个表a设置了a1列为外键,外键参考表b的b1列,那么这里a则是从表,b是主表。添加数据的时候先主表,后从表。(因为外键列的值,必须是参考列的值或null)
2.1、选择将要操作的数据库实例(执行该代码后,后续的表操作针对我们设置的数据库实例)
USE dbname;
2.2、查询当前使用数据库实例包含的所有表
show tables;
2.3、创建表
CREATE TABLE tablename(
//列(字段)列表
列名1 类型 相关配置,
列名2 类型 相关配置,
列名3 类型 相关配置
....
);
CREATE TABLE tablename(
id INT(11) NOT NULL auto_increment,
moneyint(10) unsigned zerofill default NULL,
name VARCHAR(256) NOT NULL,
PRIMARY KEY (`id`)--指定该表的主键,可以多个列(关键字)
);
2.4、显示表结构信息(列信息)
desctablename
2.5、查看表创建语句(完整语句=包含默认值)
showcreate table tablename;
2.6、删除表
DROP TABLE tablename;
DROP TABLE if exists tablename; (mysql 特有的)
2.7、表结构修改
2.7.1、修改表字段类型
语法: ALTER TABLE tablename MODIFY [COLUMN]column_definition [FIRST | AFTER col_name]
ALTER TABLE tablename MODIFY name CHAR(128) NOT NULL;
column_definition:cloumnnamecloumntype
2.7.2、增加表字段
语法:ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name];
ALTER TABLE tablename ADD age INT(11) NOT NULL;
2.7.3、删除表字段
语法: ALTER TABLE tablename DROP [COLUMN] col_name;
ALTER TABLE tablename DROP age;
2.7.4、表字段改名和类型
语法: ALTER TABLE tablename CHANGE [COLUMN] old_col_name new_col_definition [FIRST | AFTER col_name];
ALTER TABLE tablename change name uname CHAR(64);
注意:CHANGE和MODIFY都可以修改表字段定义,不同的是CHANGE写两次字段名,但是CHANGE可以修改列名,而MODIFY则不能。
2.7.5、修改字段排列顺序
上面介绍的修改表定义后面都有一个可选项目[FIRST | AFTER col_name],这个选项可以用来修改字段在表中的顺序,ADD新增字段的默认位置是在表的最后,CHANGE和MODIFY默认不改动字段的位置。
在上表中添加birth字段,并放到列id后面:
ALTER TABLE tablename ADD birth DATETIME AFTER id;
再次修改,把它放到uname表后面:
ALTER TABLE tablename MODIFY birth DATETIME NOT NULL AFTER uname;
2.7.6、修改表名
语法:ALTER TABLE tablename RENAME [TO] new_tablename;
如把上面表名tablename改成test:
ALTER TABLE tablename RENAME test;
练习-ddl语句
3、图形化工具
navicat(推荐)
多数据库
多连接
可视化表操作
逆向到模型
......
......
mysql workbench
phpMyAdmin