数据库
一、进入数据库
命令:mysql -uroot -p 输入密码
如果进不去的话,可以在前面加一个sudo
sudo mysql -uroot -p
二、数据库操作
2.1、所有数据库
命令:show databases;
2.2、创建数据库
命令:create database 数据库名;
2.3、切换数据库
命令:use 数据库名;
2.4、查看前进入选择的是哪个数据库5
命令:select databases();
2.5、显示当前使用的数据库的所有的表
格式:show tables;
2.6、删除指定数据库
格式:drop database 数据库名;
三、数据库的表操作
3.1、创建表
命令: create table 表名(id int not null auto_increment primary key,
列名 类名 ...)engine=引擎 default charset=编码
(一般的电脑编码是rgb,苹果比较高级,是utf-8 所以避免出错,加一个 default charset=utf-8)引擎 innodb
char 字符串 varchar 可变字符串
null 允许为空 not null 还不允许为空
3.2、添加数据
insert into 表名 values (0,1,18,'tom',...)
3.3、修改表
先创建一个表:create table 表名(
sex bit not null,
age int
)engine=innodb default charset=uft8;
添加列:alter table 表名 add 列名 类型;
删除列:alter table 表名 drop column 列名;
修改列: alert table 表名 modify column 列名 类型;
添加主键 key alter table 表名 add primary(列名);
删除主键 alter table 表名 drop primary key;
4、操作表
4.1、查看当前数据库中所有的表
show tables;
4.2、查看表结构
desc 表名;
4.3、查看建表结构
横着看:show create table 表名;
竖着看:show create table 表名 \G;
4.4、重命名表名
rename table 原名 to 新表名;
4.5、清空表数据;
delete from 表名;
truncate table 表名;
4.6、删除表
drop table 表名;
5、查询表
5.1、查询所有员工和所有部门
数据库命令:
-
进入 mysql 库;
use mysql;
-
查看用户权限
select * from user where user='root' \G;
-
创建数据库
create database 数据库名;
-
查看当前创建的数据库
show create database 数据库名;
-
查看所有数据库
show databases;
-
修改数据库
alter database 库名 charset gbk;
-
删除数据库
drop database 库名;
-
创建表
create table 表名(id int, name char(10) );
-
查看当前建立的表
show create table 表名;
-
查看所有表
show tables;
-
查看表结构
describe 表名; 或者 desc 表名;
-
修改表
alter table 表名 modify name char(15)
-
插入数据
insert into 表名(id, name) values(1, '张飞')
-
查询
select * from 表名;
-
修改信息
update 表名 set name='章子怡' where id=1;
-
删除数据
delete from 表名 where id=1;
表字段 增删改操作
-- 新增字段
-- 在test_table 表的 valid_status 字段之后,新增一个字段,设置对应的类型,长度,是否为null,默认值,注释
ALTER TABLE Teacher ADD COLUMN `is_staff` TINYINT ( 2 ) NOT NULL DEFAULT '1' COMMENT '是否在职 0否 1是' AFTER `Tname`;
-- 修改一个字段的类型
ALTER TABLE Teacher ADD COLUMN gender CHAR ( 3 ) NOT NULL DEFAULT '女' COMMENT '性别' AFTER Tname;
-- 修改一个字段的名称,必须要指定该字段的类型
ALTER TABLE Teacher MODIFY gender VARCHAR ( 10 ) NOT NULL DEFAULT '男' COMMENT '性别--';
ALTER TABLE Teacher CHANGE is_staff staff TINYINT ( 3 ) NOT NULL DEFAULT '2' COMMENT '字段注释';
-- 删除字段
ALTER TABLE Teacher DROP COLUMN staff;
用户操作
- 创建用户
指定 ip 范围
create user '用户名'@'192.168%' identified by "密码";
不指定 ip 范围
create user '用户名'@'%' identified by "密码";
- 删除用户
drop user '用户名'@'ip地址';
- 修改用户
rename suer '用户名'@'IP' to '新用户名'@'ip地址';
- 修改密码
set password for '用户名'@'ip地址' = password("新密码")
- 查看权限
show grants for '用户名'@'ip地址'
- 用户授权
授权用户仅对 db1.t1 文件有增删改查操作
grant select \ insert \ updata on db1.t1 to '用户名'@'ip';
用户对所有文件有所有权限 除了 grant 命令
grant all privileges on ' * ' to '用户名'@'ip';
- 远程连接
mysql -uzhang -p3306 -hIP地址 -p密码
复制表
- 复制表结构 又复制记录
create table t2 select * from 库名.表名;
- 只复制表结构
create table t2 select * from 库名.表名 where 1>3;
CREATE TABLE 新表 LIKE 旧表 ;
- 复制旧表的数据到新表(假设两个表结构一样)
INSERT INTO 新表 SELECT * FROM 旧表
- 复制旧表的数据到新表(假设两个表结构不一样)
INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表
创建表
-- ----------------------------
DROP TABLE IF EXISTS `city`; -- 如果数据库中 有 city 表就先 删除 再 创建
CREATE TABLE `city` (
`city_id` smallint(5) unsigned NOT NULL auto_increment,
`city` varchar(50) NOT NULL,
`country_id` smallint(5) unsigned NOT NULL,
-- 时间 在创建新记录和修改现有记录的时候都对这个数据列刷新
`last_update` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`city_id`), -- 指定主键
KEY `idx_fk_country_id` (`country_id`), -- 指定外键
CONSTRAINT `fk_city_country` FOREIGN KEY (`country_id`) REFERENCES `country` (`country_id`) on delete restrict ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 指定引擎 默认字符集
- 查看表
- desc 表名;
清空表
-
如果有自增 新增的数据 以之前的值开始
delete from 表名;
-
删除快 从零开始
truncate table 表名;
内置函数
-
数学:
abs(x)