一、mac os安装mysql server
# 安装mysql # brew install mysql
二、重置mysql 的root密码
# 重置root的初始密码 # 第一步: # 在系统设置偏好中,找到mysql,停止服务 # 第二步 # 打开terminal ,输入 cd /usr/local/mysql/bin/ # 再输入 sudo ./mysqld_safe --skip-grant-tables # 不要关闭该窗口 # 此时你会发现mysql的服务启动了 # 第三步 # 重新打开一个新的terminal窗口 # 依次输入下列命令 # # cd /usr/local/mysql/bin/ # ./mysql # FLUSH PRIVILEGES; # SET PASSWORD FOR 'root'@'localhost' = PASSWORD('admin123'); #admin123为可自定义的新密码 # 此时 重置root 密码完成
mysql8.0+ 请使用如下命令来重置数据库账号密码
$ alter user 'root'@'localhost' identified by 'newpassword';
三、mysql中常用操作指令
# 客户端连接 # mysql -uroot -p # (输入root密码)
•对文件(数据表)的相关操作
# 方式一: # create table test1( # id int, # name char(32), # age int # )charset=utf8; # # 方式二:# auto_increment primary key 自增主键-加快查询速度 # create table test1( # id int auto_increment primary key, # name char(32), # age int # )charset=utf8; # # # 方式三: # 列三大类型: # 整形 # int (-2147483648~2147483648) # tinyint(-128~127) # smallint(-32768~32767) # mediumint (-8388608~8388607) # bigint(比int范围大,很大) # float (科学计算0.0000000000000001234444)精度较低 # decimal(M,D) (精确度很高) # M 代表数字总个数 # D 代表小数点后面有几位 # # 字符串型 # char(32) #代表在内存空间里面开固定32个空间,哪怕没有写满32个字符,存的时候也是存32个字符 # varchar(32) #根据用户提交的数据空间,动态的判断字符大小进行存储,可以节约内存空间 # char()效率高 # varchar() 看业务场景需求 # 时间类型 # 一般使用datetime 日期和时间 # # # # 例如: # create table test1( # # 列名 [列类型][auto_increment][not null][default] # id int auto_increment primary key, # name char(32) not null default '', # age int not null default 1 # )charset=utf8;
# 删除表: # drop table
# 查看表 # show tables; #查看某数据库中的所有表 # show create table test1; #查看新建表test1的语句 # desc test1; #查看表test1的列名
•对数据的相关操作
# 查看数据 # select * from test1; # select id,name from test1; # 高级查询 # select id,name from test1 where id=5; # select id,name from test1 where id<=4; #取出test1表中,id<=4的id 和 name列内容,[运算符使用法] # select * from test1 where id>1 and id<=2; # select * from test1 where id in (1,2,3,4,); #查找在元组(1,2,3,4,) 中的id 中所有的数据,可以在python中直接传入元组 # select * from test1 where name like 'a%'; #通配查询方式,类似模糊查询 a% 代表开头为a的数据 # select * from test1 limit 2,2; #代表在表test1中从第二行开始(不含第二行) 一共取两行
# 增加数据 # insert into test1 (name,age) values ('egon',18); # insert into test1 (name,age) values ('aaa',22); # insert into test1 (name,age) values ('bbb',33); # insert into test1 (name,age) values ('ccc',44); # insert into test1 (name,age) values ('利趣',55); # insert into test1 (name,age) values ('aabb',66);
# 删除数据 # delete from test1 #将表test1 中的所有数据删除 # delete from test1 where id=1; # truncate test1; #实际生产环境中是不能用的,相当于rm -rf /* 使用truncate删除,可以使之后的insert的数据的id从1重新开始计数
# 更新数据 # update test1 set name='AA' where id=1; # update test1 set name='BB', age=222 where id=2;
四、外键
# 之前存在的问题: # 1 列里面的值可以随便的写,没有任何的约束 # 2 维护更改的时候比较麻烦 # # 改进之后: # 1 节省空间 # 2 维护更改的时候比较简单
# 例如: # create table teacher( # tid int auto_increment primary key, # tname char(32) not null default '' # )charset = utf8; # # insert into teacher (tname) values ('波多'); # insert into teacher (tname) values ('苍空'); # insert into teacher (tname) values ('饭岛'); # # # # create table course( # cid int auto_increment primary key, # cname char(32) not null default '', # teacher_id int not null default 1, # # # 创建外键 # # CONSTRAINT 自定义外键name FOREIGN KEY(当前表中的约束列名) REFERENCES 制定关联表(关联表列名) # CONSTRAINT fk_course_teah FOREIGN KEY(teacher_id) REFERENCES teacher(tid) # # )charset=utf8; # # insert into course (cname,teacher_id) values ('生物',1); # insert into course (cname,teacher_id) values ('体育',1); # insert into course (cid,cname,teacher_id) values (3,'物理',2);