数据库层面相关操作
一、登录MySQL数据库
1、本地数据库
mysql -u 用户名 -p 回车输入密码,密码不可见
比如:mysql -u root -p #先输入,回车,输入密码
2、远程数据库
mysql-h 主机-P 端口-u 用户名-p
比如:mysql -h 10.136.159.10 -u root -p
3、退出数据库
exit quit \q 三种方式在远古版本不同,现版本无差别
4、数据库概念图
二、数据库相应操作
以下操作需要执行第一步登录数据库后 db_name1 、db_name2 数据库名 table_name 表名
1、创建数据库
create database [if not exists] db_name [character set utf-8];
if not exists 即如果不存在,if exists 即如果存在
[character set utf-8]设置字符编码形式
[]中的内容可以加可以不加,加上是规范,不加是简便
2、查看数据库
show databases;
3、使用数据库
use db_name;
4、删除数据库
drop database db_name;
5、查看当前使用的数据库
select database();
6、添加数据库用户密码
(1)创建用户的同时赋予权限
grant select,insert,update,delete,create,drop on db_name1.table_name to 'username'@'localhost' identified by '123456';
grant代表赋予/允许。
select:查询;insert:插入;update:更新;create:创建;drop:删除。
on db_name1.table_name:表示添加的用户对那个数据库的那个表有效。如果想设置为对整个数据库有效,则改为:on db_name1.*
注意:若需要添加的用户是需要mysql总库中,也就是登录mysql的用户,此语句变为on mysql.*
to 'username'@'localhost' identified by '123456';
username:添加的用户名
@localhost:表示只能在本机登录,如果想设置为都能登录,则改为@'%'
by '123456' :设置密码。
(2)创建用户,赋予权限
创建用户:create user 'username' @'localhost' identified by '123456';
赋予权限:grant select on db_name.table_name to 'username' @'host'
(3)赋予权限后,刷新权限
flush privileges;
有的时候mysql会有延迟,执行这一步语句,会刷新当前所有权限。
7、修改数据库用户名或密码
(1)修改数据库用户密码
update user set password =password('new password') where user='username';
(2)修改数据库用户名
update user set user='new username' where user= 'old username';
8、查询或删除数据库用户:
(1)查询数据库的用户
select user from mysql.user;
mysql.user代表mysql数据库中的user表,每个mysql数据库都会有这么一个表,表中的用户拥有登录mysql的权限。
(2)删除数据库的用户
drop user 'username'@'localhost';
9、重命名数据库:
mysql高于1.4版本无此功能,可使用新建数据库,将原先内容导入进去的方法
假如源数据库名称为“db_name1”,目标数据库名称为"db_name2"
首先创建目标数据库:
create database db_name2;
查看源数据库中的所有表名:
(1)use db_name1;
(2)select table_name from TABLES where TABLE_SCHEMA= ‘db_name1’;
或是语句,在执行(1)之后,执行show tables;
针对上面查询出来的表名,依次执行以下命令:
rename table db_name1.tablename1 to db_name2.tablename1;
这样源数据库db_name1中的表(表结构和表数据)就被全部迁移到目标数据库db_name了。
数据库表层面相关操作
常用数据类型 INT 在设计表中的长度无效,
int 有符号:的长度大小为-2147483648-2147483647
无符号的长度大小为0-4294967295
decimal 小树类型, 表示方法(5,3)长度为5,小数点后为3
vachar 文本类型
以上信息,均可以通过cmd登录数据库后,使用help指令查看
主键约束,底层,唯一,无符号0-
创建表之前要删除佟明彪,删除语句,
drop table if exists-"表名"
逻辑删除,创建字段,默认值为0 isdelete 删除为1
通畅的删除乃是为该字段的值,在以后的查询中,利用该字段的条件进行筛选。
update student是set欧式delete =“”0“”这是给用户展现出的删除语句,实际上是更新语句
一般查询时,都会在后面注明条件,where isdelete =“1”
给表中的字段起别名,以方便查询
selete name as xingming from students
一般情况下都是在给表起别名,当进行连接查询的时候,方便查询出正确的值
select * from students as stu
消除重复行操作,一般情况下,数据库中存在重复的数据,查询时需要消除重复数据
select distanct * from from students
逻辑查询中的且、或、非
且:and 或:or 非 !=
模糊查询中的用法
%:代表任意字符,多个。一个或是没有
—:代表一个字符
— —两个下划线就代表两个字符
范围查询中的in 和between用法
in :可以是不连续的,一个一个列举出来
比如,查询家乡是北京,上海、广东的学生信息
select * from students where hometown in("北京","上海","广东")
between:连续的数据
比如,查询年龄在10岁到20岁的学生信息
select * from students where age between 10 and 20
数据库字段关于“空”的判断
只有当数据库中显示为null的时候,这个字段才是空值,而当字段值为“ ”的时候,并不是空值,或是隐藏字符,或是空格
判断一个字段是不是空值,应该是用is 关键字
where name is null
where name is not null
查询后排序 order by 关键字中的asc 和 desc的两种顺序
asc是正序,一般情况下可以省略,desc是倒序,不可省略
select * from students order by age desc
同样,当年龄相同时,可以再行排序 order by age desc,studentNo asc
中文排序,当利用中文排序时,需要转换编码
select * from students order by conuert (name using gbk)
聚合函数
count 行总数 一般情况下用count (*)
最大值最小值 Max(age) min(age)
求和 sum(age)
平均值 avg(age)