windows开启mysql服务
c:\Program Files\MySQL\MySQL Server 8.0\bin"\mysqld --install
数据库的基本语句:
创建账户:
create user 'zhangwei'@'192.168.1.%' identified by '123123'; #'%'的含义就是通配符
授权给账户:
grant all privileges on db1.* to 'zhangwei'@'%';
刷新权限:
flush privileges;
修改用户:
rename user '用户名'@'IP地址';'新用户名'@'新IP地址';
修改密码:
set password for '用户名'@'IP地址' = password('新密码')
删除用户:
drop user '用户名'@'IP地址';
查看用户权限:
show grantsfor '用户名'@'IP地址';
授权给用户:grant 权限 on 数据库.表 from '用户'@'IP地址';revoke 权限 on 数据库.表 from '用户'@'IP地址';
数据库操作流程:
show database; 查看所有的数据库usedb1; 选择数据库
show tables; 查看所有的表select user,passwd from user; 查看user表中的user和passwd列
mysql数据库建立表时指定引擎中的innodb和myisam的意义:
innodb
它提供了事务控制能力功能,它确保一组命令全部执行成功,或者当任何一个命令出现错误时所有命令的结果都被回退,
可以想像在 电子银行中事务控制能力是非常重要的。支持COMMIT、ROLLBACK和其他事务特性。 原子性操作
myisam
是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数。
因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不支持事务处理,
也不能够容错:如果你的硬盘崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常
备份你所有的实时数据,通过其复制特性,MySQL能够支持这样的备份应用程序。
数据类型:
数字类型:intsigned,有符号:-2147483658 ~ 2147483647unsigned,无符号:0 ~ 4294967295
float浮点型,表示小数,不太精准,越长越不精准double浮点型,表示小数,不太精准,越长越不精准decimal浮点型,永远是精准的,内部底层按照字符串存储decimal(10,5)10表示总位数,后面表示小数点后面几位tinyintsigned,有符号:-128 ~ 127.
unsigned,无符号:0 ~ 255
bigint字符串类型:char(10) 如果字符没占满,用字符填充,查询比较快,最多255个字符
varchar(10) 如果字符没粘满,不会进行填充,节省空间,查询时速度没有char快,最多255个字符
text 可以超过255个字符,最多65535个字符(2**16-1)
mediumtext 最多16,777,215个字符(2**24-1)logtext 最多4,294,967,295个字符(2**32-1)
时间类型:
date YYYY-MM-DD
time HH:MM:SS
year YYYY
datatime YYYY-MM-DD HH:MM:SS
timestamp YYYYMMDD HHMMSS
#注,经验:
把定长的数据类型往前面放,不定长的往后面放
如果对于大文件,将文件路径放入到数据库,降低数据库压力
创建数据库》创建表》插入数据实例:
create dabase db1 default charset utf8; #创建数据库db1,默认字符编码utf8
use db1; #进入到db1数据库
create table t1(id int auto_increment primary key,name varchar(10)not null,passwd int(8) not null) engine=innodb default charset=utf8; #创建表t1,表头为id指定证书类型,自动递增为主键,name为10个字符,不允许为空,密码为8个整数类型不能为空
insert into t1(name,passwd) values('zhangsan',123); #表t1中的name和passwd插入数据
insert into t1(id,name,passwd) values(3,'lisi',123); #插入t1表中的数据按照key和values方式,所以如果没有自增的话必须按照此方式对应写入
#####注意#####
(auto_increment)表示自增
(primary key)表示约束,不能重复且不能为空;加速查找
(not null)表述数据不能为空
删除数据库和表操作:
drop database db1; #删除数据库db1
delete fromt1; #删除表的所有数据时,不会释放表所占用的空间,并且操作是可以撤销的。主键依然根据上次自增truncate table t1; #删除表的所有数据时,执行速度更快,而且还会释放表、段所占用的空间,并且操作是不能撤销的。
修改表中的数据
mysql> select * fromuser_info;+----+----------+--------+
| id | name | passwd |
+----+----------+--------+
| 1 | zhangwei | 111 |
+----+----------+--------+update 表明 set 修改内容 where 条件;
update user_info set passwd = '234' where id = 1;
update user_info set passwd = '456' where name = 'zhangwei'