DBMS
当写程序时数据库在本地的:1.找到目录2.添加数据
数据库在远程的:1.建立socket链接 2.socket发送命令
windows下MySQL初始化:mysql --initialise
创建client:mysql -u root -p
创建MySQL-windows服务:mysql --install
运行mysql服务:net strat mysql
终止mysql服务:net stop mysql
登录mysql服务器:mysql -u root -h 主机地址或远程IP -P 3306 -p
MySQL数据库
1.概念
数据库 == 文件夹
数据表 == 文件
数据行 == 文件中的一行数据
2.初试
show databases; 查看根目录下的文件夹
create database 数据库名; 创建文件夹
use 数据库名; 使用选中的数据库 , 进入文件夹
show tables; 查看当前数据库下有哪些表 , 查看文件夹下的文件
create table 表名 (列名 数据类型,列名 数据类型,...); 创建数据库表
select 1 from 表名;查看表中数据
asc顺序desc逆序常与order by使用(order by 列名+asc/desc)
3.用户授权
用户管理特殊命令
创建用户: create user '用户名'@'IP地址' identified by '密码';
删除用户:drop user '用户名'@'IP地址';
修改用户:rename user '用户名'@'IP地址' '新用户名'@'IP地址'
修改密码:set password for '用户名'@'IP地址' '新密码'
授权管理
grant 权限 on 数据库表 to '用户名'@'IP地址'
权限: select,insert, 默认为usage
通配符 :用户名@192.168.1.%表示192.168.1.0网段都可以连接使用
SQL语句
分类:数据库级别、表级别、数据行级别
数据库级别
show databases;查看所有存在的数据库
create database 名称 DEFAULT charset utf8 COLLATE utf8_general_ci;
推荐utf8 虽说中文在utf8中占三个字节而在gbk中占两个字节但utf8的交流性更高
drop database 库名;
表级别
show tables;查看数据表,文件的个数
create table 表名;创建数据表
drop table 表名;删除数据表
delete from 表名 ;内容清空
truncate table 表名 ;清空速度更快自增回到原点
数据库行级
select 1 from 表名;查看表中内容
创建表
create table 表名{
列名 数据类型,
列名 数据类型,
...
}ENGINE = InnoDB ,DEFAULT CHARSET=utf8;
InnoDB为数据库搜索引擎,不支持全文搜索,支持事务性、原子操作(两件事一起完成,才算完成,单方面完成,回滚到初始);另一种数据库引擎MyISAM:支持全文搜索,无事务性。
注:MySQL为关系型数据库,redis、mongoDB为非关系型数据库,存储是按照key-value存储。
主键
主键(primary key)不为空not null,自增auto_increment
主键又为主键索引,一张表只有一个主键,一般情况也是自增,唯一不重复,并且不为空,两列可以组成一个主键
唯一索引:可以为null,但不适用主键中,一张可以有多个。
主键和唯一索引都是索引查找起来快,都是一种约束
主键:1.列名 类型 not null auto_increment primary key
2.primary key(列名,列名,...)
添加主键:alter table 表名 add primary key (列名)
删除主键: alter table 表名 drop primary key
外键
约束:将两张表中的列建立关联,约束。
命名:1.alter table 表名 add constraint 名字->外键名字 foreign key 表名(列名) reference 表名(列名) ->另一张表名
2.在create中加入 constraint fk_t1_t2 foreign key 列名 reference 另一张表(列名)
foreign 建立的是一对多的关联约束 。 多对多要新建一张表内部两组外键相互关联
添加外键:alter table 表名 add constraint fk_t1_t2 foreign key 表名(列名) reference 表名(列名) ->另一张表名
删除外键: alter table 表名 drop foreign key