基本SQL语句
25 分钟阅读
•
903 字
+
3751 词
命令行使用MYSQL
bash
sudo apt update
sudo apt-get install mysql-server
如果出现密码错误
解决方法
-
通过
sudo提权访问 MySQL : 既然 MySQL 默认使用 Unix socket 身份验证方式,你可以通过 sudo 提权来访问 MySQL:这将直接以bashsudo mysql -u rootroot用户身份登陆 MySQL。 -
设置 MySQL root 用户密码
:
要为 MySQL 的 root 用户设置一个密码,可以按照以下步骤进行:
-
使用
sudo登陆 MySQL:bashsudo mysql -u root -
在 MySQL Shell 中,运行以下命令来设置 root 用户密码(将
your_new_password替换为你想要设置的密码):sqlALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password'; FLUSH PRIVILEGES; -
退出 MySQL:
sql
EXIT; -
现在你可以使用 root 用户和设置的密码进行登录了:
bash
mysql -u root -p
-
使用
-
创建新用户并赋予权限
:
如果你不想以 root 用户身份使用 MySQL,可以创建一个新的 MySQL 用户并赋予其适当的权限。
然后在 MySQL Shell 中运行以下命令:bash
sudo mysql -u root现在你可以使用新创建的用户登录 MySQL:sqlCREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password'; GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;bashmysql -u newuser -p
总结
sudo
提权来访问 MySQL。你可以通过
sudo mysql -u root
直接登录 MySQL,然后根据需要设置 root 用户密码或者创建新的 MySQL 用户。
sql
show databases; 展示所有的库
create database 库名; 创建库
use 库名; 使用库,使用任何操作table指令前先use
select database(); 展示当前的库
show tables; 展示当前库里的表
create table 表名(列名 类型 额外属性, ..., ); 创建表
describe 表名; 查看表的具体属性信息
show create table 表名; 查看表的创建语句
mysql
insert into 表名 values(...,...,...,...); //插入新行,需要列出所有列
insert into 表名 (...,...,...,...) values(...,...,...,...); //插入新行,只需部分列
sql
select * from 表名; 展示表的内容
#使用where子句对select按行筛选
select * from 表名 where 条件表达式; (等于: = ,不等于: <>)
#不能和Null值直接比较,需要使用is Null 或者 is not Null
#可以使用or 和 and组合条件
#展示部分列
select 列名,列名... from 表名;
select distinct 列名... from 表名; 可以按列去重
order by 列名 (desc), 列名 (asc);按序查表
#模糊匹配
like
# % 任意字符串 - 任一字符串
where 列名 like '%y'
sql
聚集函数
count() max() min() avg()
分组聚集
select owner,count(*) from pet group by owner;
sql
多表配合 内连接 **inner join**
select * from pet inner join event on pet.name =event.name;
sql
update 更新数据
update 表名 set 列名 =新值 where 条件子句
sql
delete删除数据
delete from 表名 where 条件子句
sql
调整表的结构
alter table 表名 add 列名 类型;
alter table 表名 drop 列名;
alter table 表名 change 旧列名 新列名 类型;
sql
给表改名:
rename table 旧表名 to 新表名;
删除表
drop table 表名;
约束
Mysql库的数据结构
Mysql库的相关函数
c
MYSQL * mysql_init(MYSQL * mysql);//为MySQL连接分配资源,参数一般填NULL,数据结构MYSQL是操作资源的句柄
void mysql_close(MYSQL *mysql);
//关闭MYSQL连接
MYSQL *mysql_real_connect(MYSQL *mysql, const char * host, const char* user,const char* passwd,const char*db, unsigned int port, const char* unix_socket, unsigned long client_flag);
//mysql填mysql_init的返回值
//host 填 "localhost"
//root 填 "root"
//passwd 填 mysql用户密码
//db填 database的名字
//port 填0, unix_socket填 NULL,clientn_flag 填0
const char* mysql_error(MYSQL *mysql);
//返回报错原因
int mysql_query(MYSQL *mysql,const char *stmt_str);
//返回-1 为错误
MYSQL_RES * res = mysql_store_result(MYSQL *mysql);//在调用mysql_query和mysql_real_query之后再调用
//MYSQL_RES是行的数组
MYSQL_ROW row = mysql_fetch_row(MYSQL_RES * result)
mysql_num_rows(MYSQL_RES * result);//得到行数
mysql_num_fields(MYSQL_RES * result);//得到列数
注意事项:
读指令之后必须调用mysql_store_result
每个子线程启动之后先调用一次init和real_connect (放入临界区代码中)