Mysql

来自Shiyin's note
Shen讨论 | 贡献2022年2月7日 (一) 11:43的版本 →‎sql语言
跳到导航 跳到搜索
  • 安装和启动mysql服务
yum install mysql
service mysqld start
service enable mysqld (开机启动)
  • 设置mysql的root用户
mysqladmin -uroot -p password 'newpassword'
这种情况有时会报错,网上给出的方法是
# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
  • 建立某个数据库db1
mysql -u root -p
password:***
mysql>create database db1;
mysql>grant all on db1.* to dbuser@localhost identified by 'password'; (建立一个dbuser的数据库用户)
mysql>exit
  • 测试dbuser
mysql -u dbuser -p
  • 导入备份数据库
mysql -u root -p db1 < "data base backup file"
  • 备份数据库
mysqldump -u root -p 'pasword' db1 | gzip > /bak/db1.bakup.gz
mysql-server 变为 mariadb-server, mariadb-server 和 mariadb-galera-server有冲突,删除mariadb-galera-server即可.
  • 查看MySQL的默认数据库存储位置:mysql> show variables like '%dir%';

sql语言

  • select [expression] as [colname1],[expression] as [colname2],...;
一个select产生数据库中的 一行,select 的数据并不存储
  • create table [name] as [select statement];
将select的数据存储为table
  • select [columns] from [table] where [condition] order by [order];
  • select [columns] from [table1],[table2]
自动将两个table结合起来,记录数会变为N1*N2,如果两个表有相同的column名字,那么可以用table.column来区分
  • [expression]可以有各种运算符:如+,-,*,/,%,and,or,abs,round,not,<,<=,>,>=,<>,!= 等
  • 字符串的处理:"hello,"|| "world" 就是 hello,world,还有substr(),instr()等命令
  • 有一些命令可以直接处理所有记录,如max,sum等,count,distinct
  • group 处理部分选择的row(distinct的value)
select [columns] from [table] group by [expression] having [expression]
  • drop 删除数据库
  • delete from db where :删除rows
  • insert into db VALUES 在表中插入colomns
insert into db(col) VALUES (value)
  • update db SET cols=newvalue where

Python中的sql

  • importsqlite3