SQL语言分为4个部分:DDL(定义)、DML(操作)、DQL(查询)、DCL(控制)
1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER 2、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE 3、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE
mysql数据库管理软件,记录事物一些数据特征:
由库,表,记录组成.
库相当于一个文件夹
表相当于一个文件
记录就是文件里面一条一条的内容
表中的成员属性就是一个一个字段
可以为每个项目建立一个数据库
关系型数据库:表与表之间有联系
比如:mysql,oracle,db2,sqlserver
非关系型数据库: key-value 键值对形式 没有表的概念
比如:redis,mongodb,memcache
G 格式化输出(文本式,竖立显示)
s 查看服务器端信息
c 结束命令输入操作
q 退出当前sql命令行模式
1. 登录:mysql -uroot -p (注意单词间是由空格的)
2. 退出:q 或者exit
3. 远程连接MySQL服务器: mysql -uroot -p -h+ip号,比如mysql -uroot -p -h192.168.65.130
4. 查看当前登录用户:select user();(记得执行语句后面加冒号)
5. 设置此用户登录密码:set password = password("111");(括号内放要设置的密码)
6. 解除此用户的登录密码:set password = password("");(括号内为空)
7. 数据库的基本操作:
增:create database db0616 charset utf8;(数据库名称不用加引号)
删:drop database 成绩;
改:alter database db0616 charset gbk;
查:show databases;
8. 数据表的操作:
先选择数据库:use db0616;
增:
create table t1(id int,name char);
查:
查询所有数据表:show tables;
查询表的建表语句:show create table t1;(默认是水平显示),show create table t1G;(变成垂直显示)
查看表结构:desc t1;
改:
修改数据结构:alter table t1 modify name char(4);
修改字段名和数据结构: alter table t1 change name NAME char(1);
添加字段:alter table t1 add age int;
删除字段:alter table t1 drop column age;
更改表名:alter table t1 rename t2;
删:
drop table t2;
8. 操作记录:
增:
一次增加一条数据:insert into t1(id,name) values(1,"bob");
一次增加多条数据:insert into t1(id,name) values(2,"jack"),(3,"lisa"); (将多条数据用元祖隔开)
不指定具体字段默认将依次增加字段值:insert into t1 values(4,"rose");(值跟字段需匹配)
可以指定字段来增加值:insert into t1(id) values(5);
查:
查找所有:select * from t1;
查找字段值:select name from t1;
改:
改值:update t1 set name="eric" where id =1;(如果不加条件,则所有的字段值都会被改)
删:
删除一条记录:delete from t1 where id = 2;(如果不加条件,所有的字段值都会改变)
重置数据表:truncate table t1;
9. 可使用拼接查询:concat
select concat(a,":",b,":",c) from t9; (111:小评论:评论多多)
10. 授权:
Windows连接远程Linux中的MySQL:create user "ceshi100"@"192.168.65.1" identified by "333";
给具体某个网段下的ip设置账户,% 代表任意的数据0~255: create user "ceshi11"@"192.168.111.%" identified by "111"
设置这个用户名的所有ip都能登录:create user "user1"@"%"identified by"1";
查看这个用户的权限:show grants for "user1"@"%";
grant 权限 on 数据库.表名 to "用户名"%"ip地址" identified by "密码";(主要权限包括,select,insert,update,delete)
授权所有的权限:grant all on *.* to "ceshi12"@"%" identified by "333";
移除权限:revoke all on *.* from "user1"@"%";
删除用户:drop user "user1"@"%";
刷新权限,立刻生效:flush privileges
# ### mysql 卸载
# (1) windows 卸载
关闭服务
cmd : mysqld remove
删除已经解压的文件夹
重启电脑
# (2) linux 卸载
sudo apt-get autoremove --purge mysql-server-5.7
sudo apt-get remove mysql-common
sudo rm -rf /etc/mysql/ /var/lib/mysql
#清理残留数据
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
sudo apt autoremove
sudo apt autoreclean
存储引擎:
InnoDB
用于事务处理应用程序,支持外键和行级锁。如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包括很多更新和删除操作,那么InnoDB存储引擎是比较合适的。InnoDB除了有效的降低由删除和更新导致的锁定,还可以确保事务的完整提交和回滚,对于类似计费系统或者财务系统等对数据准确要求性比较高的系统都是合适的选择。
MyISAM
如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不高,那么可以选择这个存储引擎。
Memory
将所有的数据保存在内存中,在需要快速定位记录和其他类似数据的环境下,可以提供极快的访问。Memory的缺陷是对表的大小有限制,虽然数据库因为异常终止的话数据可以正常恢复,但是一旦数据库关闭,存储在内存中的数据都会丢失。
#查看当前的默认存储引擎:
show variables like "default_storage_engine";
#更改表的存储引擎
alter table t1 engine = innodb;
方法2:
#my.ini文件
[mysqld]
default_storage_engine=INNODB